aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/BINDINGS4
-rw-r--r--docs/BUGS4
-rw-r--r--docs/CHECKSRC.md124
-rw-r--r--docs/CODE_OF_CONDUCT.md32
-rw-r--r--docs/CODE_STYLE.md186
-rw-r--r--docs/CONTRIBUTE85
-rw-r--r--docs/DISTRO-DILEMMA176
-rw-r--r--docs/FAQ104
-rw-r--r--docs/HISTORY4
-rw-r--r--docs/HTTP-COOKIES123
-rw-r--r--docs/HTTP-COOKIES.md104
-rw-r--r--docs/HTTP2.md48
-rw-r--r--docs/INSTALL28
-rw-r--r--docs/INSTALL.devcpp2
-rw-r--r--docs/INTERNALS24
-rw-r--r--docs/KNOWN_BUGS773
-rw-r--r--docs/LICENSE-MIXING6
-rw-r--r--docs/MAIL-ETIQUETTE2
-rw-r--r--docs/MANUAL6
-rw-r--r--docs/Makefile.am22
-rw-r--r--docs/RELEASE-PROCEDURE19
-rw-r--r--docs/RESOURCES2
-rw-r--r--docs/ROADMAP.md41
-rw-r--r--docs/SECURITY2
-rw-r--r--docs/SSL-PROBLEMS26
-rw-r--r--docs/SSLCERTS54
-rw-r--r--docs/THANKS121
-rw-r--r--docs/THANKS-filter22
-rw-r--r--docs/TODO291
-rw-r--r--docs/TheArtOfHttpScripting8
-rw-r--r--docs/curl-config.12
-rw-r--r--docs/curl.1269
-rw-r--r--docs/examples/.gitignore4
-rw-r--r--docs/examples/10-at-a-time.c38
-rw-r--r--docs/examples/Makefile.am7
-rw-r--r--docs/examples/Makefile.example2
-rw-r--r--docs/examples/Makefile.inc6
-rw-r--r--docs/examples/Makefile.m324
-rw-r--r--docs/examples/Makefile.netware2
-rw-r--r--docs/examples/README52
-rwxr-xr-xdocs/examples/adddocsref.pl2
-rw-r--r--docs/examples/anyauthput.c29
-rw-r--r--docs/examples/asiohiper.cpp20
-rw-r--r--docs/examples/cacertinmem.c54
-rw-r--r--docs/examples/certinfo.c8
-rw-r--r--docs/examples/chkspeed.c89
-rw-r--r--docs/examples/cookie_interface.c42
-rw-r--r--docs/examples/curlgtk.c15
-rw-r--r--docs/examples/curlx.c355
-rw-r--r--docs/examples/debug.c12
-rw-r--r--docs/examples/evhiperfifo.c114
-rw-r--r--docs/examples/externalsocket.c19
-rw-r--r--docs/examples/fileupload.c8
-rw-r--r--docs/examples/fopen.c55
-rw-r--r--docs/examples/ftp-wildcard.c10
-rw-r--r--docs/examples/ftpget.c14
-rw-r--r--docs/examples/ftpgetinfo.c18
-rw-r--r--docs/examples/ftpgetresp.c19
-rw-r--r--docs/examples/ftpsget.c12
-rw-r--r--docs/examples/ftpupload.c15
-rw-r--r--docs/examples/ftpuploadresume.c39
-rw-r--r--docs/examples/getinfo.c13
-rw-r--r--docs/examples/getinmemory.c12
-rw-r--r--docs/examples/getredirect.c70
-rw-r--r--docs/examples/ghiper.c236
-rw-r--r--docs/examples/hiperfifo.c52
-rw-r--r--docs/examples/href_extractor.c26
-rw-r--r--docs/examples/htmltidy.c59
-rw-r--r--docs/examples/htmltitle.cpp12
-rw-r--r--docs/examples/http-post.c8
-rw-r--r--docs/examples/http2-download.c18
-rw-r--r--docs/examples/http2-serverpush.c320
-rw-r--r--docs/examples/http2-upload.c20
-rw-r--r--docs/examples/httpcustomheader.c8
-rw-r--r--docs/examples/httpput.c10
-rw-r--r--docs/examples/https.c8
-rw-r--r--docs/examples/imap-append.c13
-rw-r--r--docs/examples/imap-copy.c10
-rw-r--r--docs/examples/imap-create.c10
-rw-r--r--docs/examples/imap-delete.c10
-rw-r--r--docs/examples/imap-examine.c10
-rw-r--r--docs/examples/imap-fetch.c13
-rw-r--r--docs/examples/imap-list.c10
-rw-r--r--docs/examples/imap-lsub.c10
-rw-r--r--docs/examples/imap-multi.c14
-rw-r--r--docs/examples/imap-noop.c10
-rw-r--r--docs/examples/imap-search.c10
-rw-r--r--docs/examples/imap-ssl.c13
-rw-r--r--docs/examples/imap-store.c10
-rw-r--r--docs/examples/imap-tls.c24
-rw-r--r--docs/examples/makefile.dj6
-rw-r--r--docs/examples/multi-app.c31
-rw-r--r--docs/examples/multi-debugcallback.c16
-rw-r--r--docs/examples/multi-double.c11
-rw-r--r--docs/examples/multi-post.c14
-rw-r--r--docs/examples/multi-single.c14
-rw-r--r--docs/examples/multi-uv.c12
-rw-r--r--docs/examples/multithread.c14
-rw-r--r--docs/examples/opensslthreadlock.c41
-rw-r--r--docs/examples/persistant.c8
-rw-r--r--docs/examples/pop3-dele.c10
-rw-r--r--docs/examples/pop3-list.c10
-rw-r--r--docs/examples/pop3-multi.c14
-rw-r--r--docs/examples/pop3-noop.c10
-rw-r--r--docs/examples/pop3-retr.c10
-rw-r--r--docs/examples/pop3-ssl.c10
-rw-r--r--docs/examples/pop3-stat.c10
-rw-r--r--docs/examples/pop3-tls.c21
-rw-r--r--docs/examples/pop3-top.c10
-rw-r--r--docs/examples/pop3-uidl.c10
-rw-r--r--docs/examples/post-callback.c8
-rw-r--r--docs/examples/postinmemory.c8
-rw-r--r--docs/examples/postit2.c10
-rw-r--r--docs/examples/progressfunc.c9
-rw-r--r--docs/examples/resolve.c9
-rw-r--r--docs/examples/rtsp.c75
-rw-r--r--docs/examples/sampleconv.c40
-rw-r--r--docs/examples/sendrecv.c40
-rw-r--r--docs/examples/sepheaders.c10
-rw-r--r--docs/examples/sessioninfo.c8
-rw-r--r--docs/examples/sftpget.c8
-rw-r--r--docs/examples/simple.c8
-rw-r--r--docs/examples/simplepost.c8
-rw-r--r--docs/examples/simplessl.c49
-rw-r--r--docs/examples/smooth-gtk-thread.c25
-rw-r--r--docs/examples/smtp-expn.c12
-rw-r--r--docs/examples/smtp-mail.c32
-rw-r--r--docs/examples/smtp-multi.c16
-rw-r--r--docs/examples/smtp-ssl.c22
-rw-r--r--docs/examples/smtp-tls.c32
-rw-r--r--docs/examples/smtp-vrfy.c12
-rw-r--r--docs/examples/synctime.c67
-rw-r--r--docs/examples/threaded-ssl.c23
-rw-r--r--docs/examples/url2file.c12
-rw-r--r--docs/examples/usercertinmem.c65
-rwxr-xr-xdocs/examples/version-check.pl2
-rw-r--r--docs/examples/xmlstream.c29
-rw-r--r--docs/libcurl/ABI70
-rw-r--r--docs/libcurl/Makefile.am53
-rw-r--r--docs/libcurl/curl_easy_cleanup.32
-rw-r--r--docs/libcurl/curl_easy_duphandle.32
-rw-r--r--docs/libcurl/curl_easy_escape.39
-rw-r--r--docs/libcurl/curl_easy_getinfo.3299
-rw-r--r--docs/libcurl/curl_easy_init.32
-rw-r--r--docs/libcurl/curl_easy_pause.38
-rw-r--r--docs/libcurl/curl_easy_perform.36
-rw-r--r--docs/libcurl/curl_easy_recv.310
-rw-r--r--docs/libcurl/curl_easy_reset.32
-rw-r--r--docs/libcurl/curl_easy_send.38
-rw-r--r--docs/libcurl/curl_easy_setopt.331
-rw-r--r--docs/libcurl/curl_easy_strerror.32
-rw-r--r--docs/libcurl/curl_easy_unescape.36
-rw-r--r--docs/libcurl/curl_escape.34
-rw-r--r--docs/libcurl/curl_formadd.320
-rw-r--r--docs/libcurl/curl_formfree.36
-rw-r--r--docs/libcurl/curl_formget.36
-rw-r--r--docs/libcurl/curl_free.32
-rw-r--r--docs/libcurl/curl_getdate.32
-rw-r--r--docs/libcurl/curl_getenv.32
-rw-r--r--docs/libcurl/curl_global_cleanup.310
-rw-r--r--docs/libcurl/curl_global_init.310
-rw-r--r--docs/libcurl/curl_global_init_mem.315
-rw-r--r--docs/libcurl/curl_mprintf.314
-rw-r--r--docs/libcurl/curl_multi_add_handle.34
-rw-r--r--docs/libcurl/curl_multi_assign.32
-rw-r--r--docs/libcurl/curl_multi_cleanup.32
-rw-r--r--docs/libcurl/curl_multi_fdset.32
-rw-r--r--docs/libcurl/curl_multi_info_read.32
-rw-r--r--docs/libcurl/curl_multi_init.32
-rw-r--r--docs/libcurl/curl_multi_perform.32
-rw-r--r--docs/libcurl/curl_multi_remove_handle.34
-rw-r--r--docs/libcurl/curl_multi_setopt.344
-rw-r--r--docs/libcurl/curl_multi_socket.310
-rw-r--r--docs/libcurl/curl_multi_socket_action.324
-rw-r--r--docs/libcurl/curl_multi_strerror.32
-rw-r--r--docs/libcurl/curl_multi_timeout.316
-rw-r--r--docs/libcurl/curl_multi_wait.346
-rw-r--r--docs/libcurl/curl_share_cleanup.32
-rw-r--r--docs/libcurl/curl_share_init.32
-rw-r--r--docs/libcurl/curl_share_setopt.35
-rw-r--r--docs/libcurl/curl_share_strerror.32
-rw-r--r--docs/libcurl/curl_slist_append.310
-rw-r--r--docs/libcurl/curl_slist_free_all.32
-rw-r--r--docs/libcurl/curl_strequal.32
-rw-r--r--docs/libcurl/curl_unescape.34
-rw-r--r--docs/libcurl/curl_version.32
-rw-r--r--docs/libcurl/curl_version_info.312
-rw-r--r--docs/libcurl/index.html1
-rw-r--r--docs/libcurl/libcurl-easy.32
-rw-r--r--docs/libcurl/libcurl-errors.312
-rw-r--r--docs/libcurl/libcurl-multi.351
-rw-r--r--docs/libcurl/libcurl-share.32
-rw-r--r--docs/libcurl/libcurl-thread.3105
-rw-r--r--docs/libcurl/libcurl-tutorial.374
-rw-r--r--docs/libcurl/libcurl.320
-rw-r--r--docs/libcurl/libcurl.m46
-rw-r--r--docs/libcurl/mksymbolsmanpage.pl4
-rw-r--r--docs/libcurl/opts/CURLINFO_ACTIVESOCKET.351
-rw-r--r--docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.347
-rw-r--r--docs/libcurl/opts/CURLINFO_CERTINFO.351
-rw-r--r--docs/libcurl/opts/CURLINFO_CONDITION_UNMET.345
-rw-r--r--docs/libcurl/opts/CURLINFO_CONNECT_TIME.344
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.345
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.343
-rw-r--r--docs/libcurl/opts/CURLINFO_CONTENT_TYPE.348
-rw-r--r--docs/libcurl/opts/CURLINFO_COOKIELIST.350
-rw-r--r--docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.348
-rw-r--r--docs/libcurl/opts/CURLINFO_FILETIME.349
-rw-r--r--docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.348
-rw-r--r--docs/libcurl/opts/CURLINFO_HEADER_SIZE.344
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.344
-rw-r--r--docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.344
-rw-r--r--docs/libcurl/opts/CURLINFO_LASTSOCKET.353
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_IP.351
-rw-r--r--docs/libcurl/opts/CURLINFO_LOCAL_PORT.343
-rw-r--r--docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.344
-rw-r--r--docs/libcurl/opts/CURLINFO_NUM_CONNECTS.346
-rw-r--r--docs/libcurl/opts/CURLINFO_OS_ERRNO.343
-rw-r--r--docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.347
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_IP.349
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIMARY_PORT.342
-rw-r--r--docs/libcurl/opts/CURLINFO_PRIVATE.345
-rw-r--r--docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.344
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.342
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_TIME.346
-rw-r--r--docs/libcurl/opts/CURLINFO_REDIRECT_URL.345
-rw-r--r--docs/libcurl/opts/CURLINFO_REQUEST_SIZE.345
-rw-r--r--docs/libcurl/opts/CURLINFO_RESPONSE_CODE.360
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.342
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.344
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.347
-rw-r--r--docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.349
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.345
-rw-r--r--docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.342
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_ENGINES.347
-rw-r--r--docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.343
-rw-r--r--docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.346
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SESSION.360
-rw-r--r--docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3141
-rw-r--r--docs/libcurl/opts/CURLINFO_TOTAL_TIME.345
-rw-r--r--docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAXCONNECTS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHDATA.349
-rw-r--r--docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3133
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.320
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERDATA.32
-rw-r--r--docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.318
-rw-r--r--docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.334
-rw-r--r--docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_APPEND.323
-rw-r--r--docs/libcurl/opts/CURLOPT_AUTOREFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_BUFFERSIZE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CAINFO.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CAPATH.36
-rw-r--r--docs/libcurl/opts/CURLOPT_CERTINFO.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_DATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.34
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_ONLY.34
-rw-r--r--docs/libcurl/opts/CURLOPT_CONNECT_TO.3111
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEFILE.314
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIEJAR.38
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIELIST.324
-rw-r--r--docs/libcurl/opts/CURLOPT_COOKIESESSION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLF.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CRLFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.36
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.314
-rw-r--r--docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.379
-rw-r--r--docs/libcurl/opts/CURLOPT_DIRLISTONLY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_SERVERS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_EGDSOCKET.36
-rw-r--r--docs/libcurl/opts/CURLOPT_ERRORBUFFER.328
-rw-r--r--docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FAILONERROR.37
-rw-r--r--docs/libcurl/opts/CURLOPT_FILETIME.310
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.334
-rw-r--r--docs/libcurl/opts/CURLOPT_FORBID_REUSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FRESH_CONNECT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTPSSLAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.34
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.32
-rw-r--r--docs/libcurl/opts/CURLOPT_FTP_USE_PRET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADERFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_HEADEROPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP200ALIASES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPGET.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPOST.39
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.32
-rw-r--r--docs/libcurl/opts/CURLOPT_HTTP_VERSION.328
-rw-r--r--docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.316
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERFACE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_IPRESOLVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_ISSUERCERT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_KEYPASSWD.36
-rw-r--r--docs/libcurl/opts/CURLOPT_KRBLEVEL.34
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAIL_RCPT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXCONNECTS.36
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAXREDIRS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NETRC_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOBODY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROGRESS.321
-rw-r--r--docs/libcurl/opts/CURLOPT_NOPROXY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_NOSIGNAL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PATH_AS_IS.318
-rw-r--r--docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.352
-rw-r--r--docs/libcurl/opts/CURLOPT_PIPEWAIT.312
-rw-r--r--docs/libcurl/opts/CURLOPT_PORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_POSTREDIR.318
-rw-r--r--docs/libcurl/opts/CURLOPT_PREQUOTE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PRIVATE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_PROTOCOLS.33
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY.312
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYAUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYHEADER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXYUSERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.315
-rw-r--r--docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_PUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_QUOTE.37
-rw-r--r--docs/libcurl/opts/CURLOPT_RANDOM_FILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RANGE.314
-rw-r--r--docs/libcurl/opts/CURLOPT_READDATA.38
-rw-r--r--docs/libcurl/opts/CURLOPT_READFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.313
-rw-r--r--docs/libcurl/opts/CURLOPT_REFERER.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESOLVE.322
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_REQUEST.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.32
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.312
-rw-r--r--docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SASL_IR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SEEKFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SERVICE_NAME.319
-rw-r--r--docs/libcurl/opts/CURLOPT_SHARE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.318
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYDATA.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.310
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERT.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLCERTTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE.325
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.326
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEY.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLKEYTYPE.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSLVERSION.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.38
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.36
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.388
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_FALSESTART.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_OPTIONS.328
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.34
-rw-r--r--docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.34
-rw-r--r--docs/libcurl/opts/CURLOPT_STDERR.32
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.356
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.359
-rw-r--r--docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.363
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.347
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TCP_NODELAY.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TELNETOPTIONS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.371
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMECONDITION.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEOUT_MS.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TIMEVALUE.320
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.312
-rw-r--r--docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFERTEXT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.36
-rw-r--r--docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.32
-rw-r--r--docs/libcurl/opts/CURLOPT_UPLOAD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_URL.315
-rw-r--r--docs/libcurl/opts/CURLOPT_USERAGENT.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USERNAME.36
-rw-r--r--docs/libcurl/opts/CURLOPT_USERPWD.32
-rw-r--r--docs/libcurl/opts/CURLOPT_USE_SSL.32
-rw-r--r--docs/libcurl/opts/CURLOPT_VERBOSE.32
-rw-r--r--docs/libcurl/opts/CURLOPT_WILDCARDMATCH.34
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEDATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_WRITEFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFODATA.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.34
-rw-r--r--docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.32
-rw-r--r--docs/libcurl/opts/Makefile.am1169
-rw-r--r--docs/libcurl/opts/template.32
-rw-r--r--docs/libcurl/symbols-in-versions40
-rwxr-xr-xdocs/libcurl/symbols.pl2
-rw-r--r--docs/mk-ca-bundle.14
487 files changed, 8804 insertions, 3398 deletions
diff --git a/docs/BINDINGS b/docs/BINDINGS
index fed16e99..eb67c3d6 100644
--- a/docs/BINDINGS
+++ b/docs/BINDINGS
@@ -27,7 +27,7 @@ Basic
C
libcurl is a C library in itself!
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
C++
@@ -184,7 +184,7 @@ Rexx
RPG
Support for ILE/RPG on OS/400 is included in source distribution
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
See packages/OS400/README.OS400 and packages/OS400/curl.inc.in
Ruby
diff --git a/docs/BUGS b/docs/BUGS
index 36686ef8..dfd9b205 100644
--- a/docs/BUGS
+++ b/docs/BUGS
@@ -35,12 +35,12 @@ BUGS
have a go at a solution. You can optionally also post your bug/problem at
curl's bug tracking system over at
- https://github.com/bagder/curl/issues
+ https://github.com/curl/curl/issues
Please read the rest of this document below first before doing that!
If you feel you need to ask around first, find a suitable mailing list and
- post there. The lists are available on http://curl.haxx.se/mail/
+ post there. The lists are available on https://curl.haxx.se/mail/
1.3 What to report
diff --git a/docs/CHECKSRC.md b/docs/CHECKSRC.md
new file mode 100644
index 00000000..591e066f
--- /dev/null
+++ b/docs/CHECKSRC.md
@@ -0,0 +1,124 @@
+# checksrc
+
+This is the tool we use within the curl project to scan C source code and
+check that it adheres to our [Source Code Style guide](CODE_STYLE.md).
+
+## Usage
+
+ checksrc.pl [options] [file1] [file2] ...
+
+## Command line options
+
+`-W[file]` whitelists that file and excludes it from being checked. Helpful
+when, for example, one of the files is generated.
+
+`-D[dir]` directory name to prepend to file names when accessing them.
+
+`-h` shows the help output, that also lists all recognized warnings
+
+## What does checksrc warn for?
+
+checksrc does not check and verify the code against the entire style guide,
+but the script is instead an effort to detect the most common mistakes and
+syntax mistakes that contributers make before they get accustomed to our code
+style. Heck, many of us regulars do the mistakes too and this script helps us
+keep the code in shape.
+
+ checksrc.pl -h
+
+Lists how to use the script and it lists all existing warnings it has and
+problems it detects. At the time of this writing, the existing checksrc
+warnings are:
+
+- `BADCOMMAND`: There's a bad !checksrc! instruction in the code. See the
+ **Ignore certain warnings** section below for details.
+
+- `BANNEDFUNC`: A banned function was used. The funtions sprintf, vsprintf,
+ strcat, strncat, gets are **never** allowed in curl source code.
+
+- `BRACEELSE`: '} else' on the same line. The else is supposed to be on the
+ following line.
+
+- `BRACEPOS`: wrong position for an open brace (`{`).
+
+- `COMMANOSPACE`: a comma without following space
+
+- `COPYRIGHT`: the file is missing a copyright statement!
+
+- `CPPCOMMENTS`: `//` comment detected, that's not C89 compliant
+
+- `FOPENMODE`: `fopen()` needs a macro for the mode string, use it
+
+- `INDENTATION`: detected a wrong start column for code. Note that this warning
+ only checks some specific places and will certainly miss many bad
+ indentations.
+
+- `LONGLINE`: A line is longer than 79 columns.
+
+- `PARENBRACE`: `){` was used without sufficient space in between.
+
+- `RETURNNOSPACE`: `return` was used without space between the keyword and the
+ following value.
+
+- `SPACEAFTERPAREN`: there was a space after open parenthesis, `( text`.
+
+- `SPACEBEFORECLOSE`: there was a space before a close parenthesis, `text )`.
+
+- `SPACEBEFORECOMMA`: there was a space before a comma, `one , two`.
+
+- `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`,
+ where one was not expected
+
+- `SPACESEMILCOLON`: there was a space before semicolon, ` ;`.
+
+- `TABS`: TAB characters are not allowed!
+
+- `TRAILINGSPACE`: Trailing white space on the line
+
+- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used,
+ that's an ignore that should be removed or changed to get used.
+
+## Ignore certain warnings
+
+Due to the nature of the source code and the flaws of the checksrc tool, there
+is sometimes a need to ignore specific warnings. checksrc allows a few
+different ways to do this.
+
+### Inline ignore
+
+You can control what to ignore within a specific source file by providing
+instructions to checksrc in the source code itself. You need a magic marker
+that is `!checksrc!` followed by the instruction. The instruction can ask to
+ignore a specific warning N number of times or you ignore all of them until
+you mark the end of the ignored section.
+
+Inline ignores are only done for that single specific source code file.
+
+Example
+
+ /* !checksrc! disable LONGLINE all */
+
+This will ignore the warning for overly long lines until it is re-enabled with:
+
+ /* !checksrc! enable LONGLINE */
+
+If the enabling isn't performed before the end of the file, it will be enabled
+automatically for the next file.
+
+You can also opt to ignore just N violations so that if you have a single long
+line you just can't shorten and is agreed to be fine anyway:
+
+ /* !checksrc! disable LONGLINE 1 */
+
+... and the warning for long lines will be enabled again automatically after
+it has ignored that single warning. The number `1` can of course be changed to
+any other integer number. It can be used to make sure only the exact intended
+instances are ignored and nothing extra.
+
+### Directory wide ignore patterns
+
+This is a method we've transitioned away from. Use inline ignores as far as
+possible.
+
+Make a `checksrc.whitelist` file in the directory of the source code with the
+false positive, and include the full offending line into this file.
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..04ea66ed
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -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/)
diff --git a/docs/CODE_STYLE.md b/docs/CODE_STYLE.md
new file mode 100644
index 00000000..73a4d94b
--- /dev/null
+++ b/docs/CODE_STYLE.md
@@ -0,0 +1,186 @@
+# cURL C code style
+
+Source code that has a common style is easier to read than code that uses
+different styles in different places. It helps making the code feel like one
+single code base. Easy-to-read is a very important property of code and helps
+making it easier to review when new things are added and it helps debugging
+code when developers are trying to figure out why things go wrong. A unified
+style is more important than individual contributors having their own personal
+tastes satisfied.
+
+Our C code has a few style rules. Most of them are verified and upheld by the
+lib/checksrc.pl script. Invoked with `make checksrc` or even by default by the
+build system when built after `./configure --enable-debug` has been used.
+
+It is normally not a problem for anyone to follow the guidelines, as you just
+need to copy the style already used in the source code and there are no
+particularly unusual rules in our set of rules.
+
+We also work hard on writing code that are warning-free on all the major
+platforms and in general on as many platforms as possible. Code that obviously
+will cause warnings will not be accepted as-is.
+
+## Naming
+
+Try using a non-confusing naming scheme for your new functions and variable
+names. It doesn't necessarily have to mean that you should use the same as in
+other places of the code, just that the names should be logical,
+understandable and be named according to what they're used for. File-local
+functions should be made static. We like lower case names.
+
+See the INTERNALS document on how we name non-exported library-global symbols.
+
+## Indenting
+
+We use only spaces for indentation, never TABs. We use two spaces for each new
+open brace.
+
+ if(something_is_true) {
+ while(second_statement == fine) {
+ moo();
+ }
+ }
+
+## Comments
+
+Since we write C89 code, `//` comments are not allowed. They weren't
+introduced in the C standard until C99. We use only `/*` and `*/` comments:
+
+ /* this is a comment */
+
+## Long lines
+
+Source code in curl may never be wider than 80 columns and there are two
+reasons for maintaining this even in the modern era of very large and high
+resolution screens:
+
+1. Narrower columns are easier to read than very wide ones. There's a reason
+ newspapers have used columns for decades or centuries.
+
+2. Narrower columns allow developers to easier show multiple pieces of code
+ next to each other in different windows. I often have two or three source
+ code windows next to each other on the same screen - as well as multiple
+ terminal and debugging windows.
+
+## Braces
+
+In if/while/do/for expressions, we write the open brace on the same line as
+the keyword and we then set the closing brace on the same indentation level as
+the initial keyword. Like this:
+
+ if(age < 40) {
+ /* clearly a youngster */
+ }
+
+When we write functions however, the opening brace should be in the first
+column of the first line:
+
+ int main(int argc, char **argv)
+ {
+ return 1;
+ }
+
+## 'else' on the following line
+
+When adding an `else` clause to a conditional expression using braces, we add
+it on a new line after the closing brace. Like this:
+
+ if(age < 40) {
+ /* clearly a youngster */
+ }
+ else {
+ /* probably grumpy */
+ }
+
+## No space before parentheses
+
+When writing expressions using if/while/do/for, there shall be no space
+between the keyword and the open parenthesis. Like this:
+
+ while(1) {
+ /* loop forever */
+ }
+
+## Use boolean conditions
+
+Rather than test a conditional value such as a bool against TRUE or FALSE, a
+pointer against NULL or != NULL and an int against zero or not zero in
+if/while conditions we prefer:
+
+ result = do_something();
+ if(!result) {
+ /* something went wrong */
+ return result;
+ }
+
+## No assignments in conditions
+
+To increase readability and reduce complexity of conditionals, we avoid
+assigning variables within if/while conditions. We frown upon this style:
+
+ if((ptr = malloc(100)) == NULL)
+ return NULL;
+
+and instead we encourage the above version to be spelled out more clearly:
+
+ ptr = malloc(100);
+ if(!ptr)
+ return NULL;
+
+## New block on a new line
+
+We never write multiple statements on the same source line, even for very
+short if() conditions.
+
+ if(a)
+ return TRUE;
+ else if(b)
+ return FALSE;
+
+and NEVER:
+
+ if(a) return TRUE;
+ else if(b) return FALSE;
+
+## Space around operators
+
+Please use spaces on both sides of operators in C expressions. Postfix `(),
+[], ->, ., ++, --` and Unary `+, - !, ~, &` operators excluded they should
+have no space.
+
+Examples:
+
+ bla = func();
+ who = name[0];
+ age += 1;
+ true = !false;
+ size += -2 + 3 * (a + b);
+ ptr->member = a++;
+ struct.field = b--;
+ ptr = &address;
+ contents = *pointer;
+ complement = ~bits;
+ empty = (!*string) ? TRUE : FALSE;
+
+## Platform dependent code
+
+Use `#ifdef HAVE_FEATURE` to do conditional code. We avoid checking for
+particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE
+shall be generated by the configure script for unix-like systems and they are
+hard-coded in the config-[system].h files for the others.
+
+We also encourage use of macros/functions that possibly are empty or defined
+to constants when libcurl is built without that feature, to make the code
+seamless. Like this style where the `magic()` function works differently
+depending on a build-time conditional:
+
+ #ifdef HAVE_MAGIC
+ void magic(int a)
+ {
+ return a + 2;
+ }
+ #else
+ #define magic(x) 1
+ #endif
+
+ int content = magic(3);
diff --git a/docs/CONTRIBUTE b/docs/CONTRIBUTE
index c6ea9773..9e84175b 100644
--- a/docs/CONTRIBUTE
+++ b/docs/CONTRIBUTE
@@ -15,18 +15,13 @@
1.2 License
1.3 What To Read
- 2. cURL Coding Standards
- 2.1 Naming
- 2.2 Indenting
- 2.3 Commenting
- 2.4 Line Lengths
- 2.5 General Style
- 2.6 Non-clobbering All Over
- 2.7 Platform Dependent Code
- 2.8 Write Separate Patches
- 2.9 Patch Against Recent Sources
- 2.10 Document
- 2.11 Test Cases
+ 2. Write a good patch
+ 2.1 Follow code style
+ 2.2 Non-clobbering All Over
+ 2.3 Write Separate Patches
+ 2.4 Patch Against Recent Sources
+ 2.5 Document
+ 2.6 Test Cases
3. Pushing Out Your Changes
3.1 Write Access to git Repository
@@ -42,13 +37,13 @@
1.1 Join the Community
- Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
+ Skip over to https://curl.haxx.se/mail/ and join the appropriate mailing
list(s). Read up on details before you post questions. Read this file before
you start sending patches! We prefer patches and discussions being held on
the mailing list(s), not sent to individuals.
Before posting to one of the curl mailing lists, please read up on the mailing
- list etiquette: http://curl.haxx.se/mail/etiquette.html
+ list etiquette: https://curl.haxx.se/mail/etiquette.html
We also hang out on IRC in #curl on irc.freenode.net
@@ -87,48 +82,15 @@
list is gonna give you a lot of insights on what's going on right now. Asking
there is a good idea too.
-2. cURL Coding Standards
+2. Write a good patch
-2.1 Naming
+2.1 Follow code style
- Try using a non-confusing naming scheme for your new functions and variable
- names. It doesn't necessarily have to mean that you should use the same as in
- other places of the code, just that the names should be logical,
- understandable and be named according to what they're used for. File-local
- functions should be made static. We like lower case names.
+ When writing C code, follow the CODE_STYLE already established in the
+ project. Consistent style makes code easier to read and mistakes less likely
+ to happen.
- See the INTERNALS document on how we name non-exported library-global
- symbols.
-
-2.2 Indenting
-
- Use the same indenting levels and bracing method as all the other code
- already does. It makes the source code easier to follow if all of it is
- written using the same style. We don't ask you to like it, we just ask you to
- follow the tradition! ;-) This mainly means: 2-level indents, using spaces
- only (no tabs) and having the opening brace ({) on the same line as the if()
- or while().
-
- Also note that we use if() and while() with no space before the parenthesis.
-
-2.3 Commenting
-
- Comment your source code extensively using C comments (/* comment */), DO NOT
- use C++ comments (// this style). Commented code is quality code and enables
- future modifications much more. Uncommented code risk having to be completely
- replaced when someone wants to extend things, since other persons' source
- code can get quite hard to read.
-
-2.4 Line Lengths
-
- We write source lines shorter than 80 columns.
-
-2.5 General Style
-
- Keep your functions small. If they're small you avoid a lot of mistakes and
- you don't accidentally mix up variables etc.
-
-2.6 Non-clobbering All Over
+2.2 Non-clobbering All Over
When you write new functionality or fix bugs, it is important that you don't
fiddle all over the source files and functions. Remember that it is likely
@@ -137,14 +99,7 @@
functionality, try writing it in a new source file. If you fix bugs, try to
fix one bug at a time and send them as separate patches.
-2.7 Platform Dependent Code
-
- Use #ifdef HAVE_FEATURE to do conditional code. We avoid checking for
- particular operating systems or hardware in the #ifdef lines. The
- HAVE_FEATURE shall be generated by the configure script for unix-like systems
- and they are hard-coded in the config-[system].h files for the others.
-
-2.8 Write Separate Patches
+2.3 Write Separate Patches
It is annoying when you get a huge patch from someone that is said to fix 511
odd problems, but discussions and opinions don't agree with 510 of them - or
@@ -158,14 +113,14 @@
Also, separate patches enable bisecting much better when we track problems in
the future.
-2.9 Patch Against Recent Sources
+2.4 Patch Against Recent Sources
Please try to get the latest available sources to make your patches
against. It makes the life of the developers so much easier. The very best is
if you get the most up-to-date sources from the git repository, but the
latest release archive is quite OK as well!
-2.10 Document
+2.5 Document
Writing docs is dead boring and one of the big problems with many open source
projects. Someone's gotta do it. It makes it a lot easier if you submit a
@@ -176,7 +131,7 @@
ASCII files. All HTML files on the web site and in the release archives are
generated from the nroff/ASCII versions.
-2.11 Test Cases
+2.6 Test Cases
Since the introduction of the test suite, we can quickly verify that the main
features are working as they're supposed to. To maintain this situation and
@@ -203,7 +158,7 @@
You need to first checkout the repository:
- git clone https://github.com/bagder/curl.git
+ git clone https://github.com/curl/curl.git
You then proceed and edit all the files you like and you commit them to your
local repository:
diff --git a/docs/DISTRO-DILEMMA b/docs/DISTRO-DILEMMA
deleted file mode 100644
index 2d317fdb..00000000
--- a/docs/DISTRO-DILEMMA
+++ /dev/null
@@ -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
diff --git a/docs/FAQ b/docs/FAQ
index 06a306d9..8ce52175 100644
--- a/docs/FAQ
+++ b/docs/FAQ
@@ -30,6 +30,7 @@ FAQ
2.2 Does curl work/build with other SSL libraries?
2.3 Where can I find a copy of LIBEAY32.DLL?
2.4 Does curl support SOCKS (RFC 1928) ?
+ 2.5 Install libcurl for both 32bit and 64bit?
3. Usage Problems
3.1 curl: (1) SSL is disabled, https: not supported
@@ -225,7 +226,9 @@ FAQ
implement it for you, that is not a very friendly attitude. We spend a
considerable time already on maintaining and developing curl. In order to
get more out of us, you should consider trading in some of your time and
- efforts in return.
+ efforts in return. Simply go to the GitHub repo which resides at
+ https://github.com/curl/curl, fork the project, and create pull requests
+ with your proposed changes.
If you write the code, chances are bigger that it will get into curl faster.
@@ -251,9 +254,10 @@ FAQ
We still get help from companies. Haxx provides web site, bandwidth, mailing
lists etc, sourceforge.net hosts project services we take advantage from,
- like the bug tracker and github hosts the primary git repository. Also
- again, some companies have sponsored certain parts of the development in the
- past and I hope some will continue to do so in the future.
+ like the bug tracker, and GitHub hosts the primary git repository at
+ https://github.com/curl/curl. Also again, some companies have sponsored
+ certain parts of the development in the past and I hope some will continue to
+ do so in the future.
If you want to support our project, consider a donation or a banner-program
or even better: by helping us coding, documenting, testing etc.
@@ -278,7 +282,7 @@ FAQ
Please do not mail any single individual unless you really need to. Keep
curl-related questions on a suitable mailing list. All available mailing
lists are listed in the MANUAL document and online at
- http://curl.haxx.se/mail/
+ https://curl.haxx.se/mail/
Keeping curl-related questions and discussions on mailing lists allows
others to join in and help, to share their ideas, contribute their
@@ -299,7 +303,7 @@ FAQ
your curl-related problems.
We list available alternatives on the curl web site:
- http://curl.haxx.se/support.html
+ https://curl.haxx.se/support.html
1.10 How many are using curl?
@@ -316,7 +320,7 @@ FAQ
In May 2012 Daniel did a counting game and came up with a number that may
be completely wrong or somewhat accurate. Over 500 million!
- See http://daniel.haxx.se/blog/2012/05/16/300m-users/
+ See https://daniel.haxx.se/blog/2012/05/16/300m-users/
1.11 Why don't you update ca-bundle.crt
@@ -338,7 +342,7 @@ FAQ
If you want the most recent collection of ca certs that Mozilla Firefox
uses, we recommend that you extract the collection yourself from Mozilla
Firefox (by running 'make ca-bundle), or by using our online service setup
- for this purpose: http://curl.haxx.se/docs/caextract.html
+ for this purpose: https://curl.haxx.se/docs/caextract.html
1.12 I have a problem who can I chat with?
@@ -352,13 +356,15 @@ FAQ
cryptography. When doing so, the Export Control Classification Number (ECCN)
is used to identify the level of export control etc.
- ASF gives a good explanation at https://www.apache.org/dev/crypto.html
+ Apache Software Foundation gives a good explanation of ECCNs at
+ https://www.apache.org/dev/crypto.html
We believe curl's number might be ECCN 5D002, another possibility is
- 5D992. It seems necessary to write them, asking to confirm.
+ 5D992. It seems necessary to write them (the authority that administers ECCN
+ numbers), asking to confirm.
- Comprehensible explanations of the meaning of such numbers and how to
- obtain them (resp.) are here
+ Comprehensible explanations of the meaning of such numbers and how to obtain
+ them (resp.) are here
http://www.bis.doc.gov/licensing/exportingbasics.htm
http://www.bis.doc.gov/licensing/do_i_needaneccn.html
@@ -444,7 +450,7 @@ FAQ
GnuTLS, yassl, NSS, PolarSSL, axTLS, Secure Transport (native iOS/OS X),
WinSSL (native Windows) or GSKit (native IBM i). They all have their pros
and cons, and we try to maintain a comparison of them here:
- http://curl.haxx.se/docs/ssl-compared.html
+ https://curl.haxx.se/docs/ssl-compared.html
2.3 Where can I find a copy of LIBEAY32.DLL?
@@ -459,6 +465,32 @@ FAQ
Yes, SOCKS 4 and 5 are supported.
+ 2.5 Install libcurl for both 32bit and 64bit?
+
+ In curl's configure procedure one of the regular include files get created
+ with platform specific information. The file 'curl/curlbuild.h' in the
+ installed libcurl file tree is therefore somewhat tied to that particular
+ platform.
+
+ To allow applications to get built for either 32bit or 64bit you need to
+ install libcurl headers for both setups and unfortunately curl doesn't do
+ this automatically.
+
+ A commonly used procedure is this:
+
+ $ ./configure [32bit platform]
+ $ mv curl/curlbuild.h curl/curlbuild-32bit.h
+ $ ./configure [64bit platform]
+ $ mv curl/curlbuild.h curl/curlbuild-64bit.h
+
+ Then you make a toplevel curl/curlbuild.h replacement that only does this:
+
+ #ifdef IS_32BIT
+ #include "curlbuild-32bit.h"
+ else
+ #include "curlbuild-64bit.h"
+ #endif
+
3. Usage problems
@@ -556,7 +588,7 @@ FAQ
Find out more about which languages that support curl directly, and how to
install and use them, in the libcurl section of the curl web site:
- http://curl.haxx.se/libcurl/
+ https://curl.haxx.se/libcurl/
All the various bindings to libcurl are made by other projects and people,
outside of the cURL project. The cURL project itself only produces libcurl
@@ -689,7 +721,7 @@ FAQ
certificate. Server certificate verification is enabled by default in curl
and libcurl and is often the reason for problems as explained in FAQ entry
4.12 and the SSLCERTS document
- (http://curl.haxx.se/docs/sslcerts.html). Server certificates that are
+ (https://curl.haxx.se/docs/sslcerts.html). Server certificates that are
"self-signed" or otherwise signed by a CA that you do not have a CA cert
for, cannot be verified. If the verification during a connect fails, you are
refused access. You then need to explicitly disable the verification to
@@ -980,7 +1012,7 @@ FAQ
this check.
Details are also in the SSLCERTS file in the release archives, found online
- here: http://curl.haxx.se/docs/sslcerts.html
+ here: https://curl.haxx.se/docs/sslcerts.html
4.13 Why is curl -R on Windows one hour off?
@@ -1087,7 +1119,7 @@ FAQ
In such cases, the TCP/IP stack is responsible for detecting when the
network connection is irrevocably lost. Since with some protocols it is
- perfectly legal for the client wait indefinitely for data, the stack may
+ perfectly legal for the client to wait indefinitely for data, the stack may
never report a problem, and even when it does, it can take up to 20 minutes
for it to detect an issue. The curl option --keepalive-time enables
keep-alive support in the TCP/IP stack which makes it periodically probe the
@@ -1153,25 +1185,9 @@ FAQ
your system has such. Note that you must never share the same handle in
multiple threads.
- libcurl's implementation of timeouts might use signals (depending on what it
- was built to use for name resolving), and signal handling is generally not
- thread-safe. Multi-threaded Applicationss that call libcurl from different
- threads (on different handles) might want to use CURLOPT_NOSIGNAL, e.g.:
-
- curl_easy_setopt(handle, CURLOPT_NOSIGNAL, true);
-
- If you use a OpenSSL-powered libcurl in a multi-threaded environment, you
- need to provide one or two locking functions:
-
- https://www.openssl.org/docs/crypto/threads.html
-
- If you use a GnuTLS-powered libcurl in a multi-threaded environment, you
- need to provide locking function(s) for libgcrypt (which is used by GnuTLS
- for the crypto functions).
-
- https://web.archive.org/web/20111103083330/http://www.gnu.org/software/gnutls/manual/html_node/Multi_002dthreaded-applications.html
-
- No special locking is needed with a NSS-powered libcurl. NSS is thread-safe.
+ There may be some exceptions to thread safety depending on how libcurl was
+ built. Please review the guidelines for thread safety to learn more:
+ https://curl.haxx.se/libcurl/c/threadsafe.html
5.2 How can I receive all data into a large memory chunk?
@@ -1397,7 +1413,7 @@ FAQ
to do "LIST -a" or similar to see them.
The application thus needs to parse the LIST output. One such existing
- list parser is available at http://cr.yp.to/ftpparse.html Versions of
+ list parser is available at https://cr.yp.to/ftpparse.html Versions of
libcurl since 7.21.0 also provide the ability to specify a wildcard to
download multiple files from one FTP directory.
@@ -1516,7 +1532,7 @@ FAQ
notice" somewhere. Most probably like in the documentation or in the section
where other third party dependencies already are mentioned and acknowledged.
- As can be seen here: http://curl.haxx.se/docs/companies.html and elsewhere,
+ As can be seen here: https://curl.haxx.se/docs/companies.html and elsewhere,
more and more companies are discovering the power of libcurl and take
advantage of it even in commercial environments.
@@ -1536,9 +1552,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 +1561,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.
diff --git a/docs/HISTORY b/docs/HISTORY
index e76e5b94..f878ee10 100644
--- a/docs/HISTORY
+++ b/docs/HISTORY
@@ -65,7 +65,7 @@ OpenSSL took over where SSLeay was abandoned.
May, first Debian package.
August, LDAP:// and FILE:// support added. The curl web site gets 1300 visits
-weekly.
+weekly. Moved site to curl.haxx.nu.
Released curl 6.0 in September. 15000 lines of code.
@@ -81,6 +81,8 @@ the easy interface and turned out to be the beginning of actually getting
other software and programs to get based on and powered by libcurl. Almost
20000 lines of code.
+June 2000: the curl site moves to "curl.haxx.se"
+
August, the curl web site gets 4000 visits weekly.
The PHP guys adopted libcurl already the same month, when the first ever third
diff --git a/docs/HTTP-COOKIES b/docs/HTTP-COOKIES
deleted file mode 100644
index b5abddfa..00000000
--- a/docs/HTTP-COOKIES
+++ /dev/null
@@ -1,123 +0,0 @@
-Updated: July 3, 2012 (http://curl.haxx.se/docs/http-cookies.html)
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
-
-HTTP Cookies
-
- 1. HTTP Cookies
- 1.1 Cookie overview
- 1.2 Cookies saved to disk
- 1.3 Cookies with curl the command line tool
- 1.4 Cookies with libcurl
- 1.5 Cookies with javascript
-
-==============================================================================
-
-1. HTTP Cookies
-
- 1.1 Cookie overview
-
- HTTP cookies are pieces of 'name=contents' snippets that a server tells the
- client to hold and then the client sends back those the server on subsequent
- requests to the same domains/paths for which the cookies were set.
-
- Cookies are either "session cookies" which typically are forgotten when the
- session is over which is often translated to equal when browser quits, or
- the cookies aren't session cookies they have expiration dates after which
- the client will throw them away.
-
- Cookies are set to the client with the Set-Cookie: header and are sent to
- servers with the Cookie: header.
-
- For a very long time, the only spec explaining how to use cookies was the
- original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html
-
- In 2011, RFC6265 (https://www.ietf.org/rfc/rfc6265.txt) was finally published
- and details how cookies work within HTTP.
-
- 1.2 Cookies saved to disk
-
- Netscape once created a file format for storing cookies on disk so that they
- would survive browser restarts. curl adopted that file format to allow
- sharing the cookies with browsers, only to see browsers move away from that
- format. Modern browsers no longer use it, while curl still does.
-
- The netscape cookie file format stores one cookie per physical line in the
- file with a bunch of associated meta data, each field separated with
- TAB. That file is called the cookiejar in curl terminology.
-
- When libcurl saves a cookiejar, it creates a file header of its own in which
- there is a URL mention that will link to the web version of this document.
-
- 1.3 Cookies with curl the command line tool
-
- curl has a full cookie "engine" built in. If you just activate it, you can
- have curl receive and send cookies exactly as mandated in the specs.
-
- Command line options:
-
- -b, --cookie
-
- tell curl a file to read cookies from and start the cookie engine, or if
- it isn't a file it will pass on the given string. -b name=var works and so
- does -b cookiefile.
-
- -j, --junk-session-cookies
-
- when used in combination with -b, it will skip all "session cookies" on
- load so as to appear to start a new cookie session.
-
- -c, --cookie-jar
-
- tell curl to start the cookie engine and write cookies to the given file
- after the request(s)
-
- 1.4 Cookies with libcurl
-
- libcurl offers several ways to enable and interface the cookie engine. These
- options are the ones provided by the native API. libcurl bindings may offer
- access to them using other means.
-
- CURLOPT_COOKIE
-
- Is used when you want to specify the exact contents of a cookie header to
- send to the server.
-
- CURLOPT_COOKIEFILE
-
- Tell libcurl to activate the cookie engine, and to read the initial set of
- cookies from the given file. Read-only.
-
- CURLOPT_COOKIEJAR
-
- Tell libcurl to activate the cookie engine, and when the easy handle is
- closed save all known cookies to the given cookiejar file. Write-only.
-
- CURLOPT_COOKIELIST
-
- Provide detailed information about a single cookie to add to the internal
- storage of cookies. Pass in the cookie as a HTTP header with all the
- details set, or pass in a line from a netscape cookie file. This option
- can also be used to flush the cookies etc.
-
- CURLINFO_COOKIELIST
-
- Extract cookie information from the internal cookie storage as a linked
- list.
-
- 1.5 Cookies with javascript
-
- These days a lot of the web is built up by javascript. The webbrowser loads
- complete programs that render the page you see. These javascript programs
- can also set and access cookies.
-
- Since curl and libcurl are plain HTTP clients without any knowledge of or
- capability to handle javascript, such cookies will not be detected or used.
-
- Often, if you want to mimic what a browser does on such web sites, you can
- record web browser HTTP traffic when using such a site and then repeat the
- cookie operations using curl or libcurl.
diff --git a/docs/HTTP-COOKIES.md b/docs/HTTP-COOKIES.md
new file mode 100644
index 00000000..a1b28345
--- /dev/null
+++ b/docs/HTTP-COOKIES.md
@@ -0,0 +1,104 @@
+# HTTP Cookies
+
+## Cookie overview
+
+ Cookies are `name=contents` pairs that a HTTP server tells the client to
+ hold and then the client sends back those to the server on subsequent
+ requests to the same domains and paths for which the cookies were set.
+
+ Cookies are either "session cookies" which typically are forgotten when the
+ session is over which is often translated to equal when browser quits, or
+ the cookies aren't session cookies they have expiration dates after which
+ the client will throw them away.
+
+ Cookies are set to the client with the Set-Cookie: header and are sent to
+ servers with the Cookie: header.
+
+ For a very long time, the only spec explaining how to use cookies was the
+ original [Netscape spec from 1994](https://curl.haxx.se/rfc/cookie_spec.html).
+
+ In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally
+ published and details how cookies work within HTTP.
+
+## Cookies saved to disk
+
+ Netscape once created a file format for storing cookies on disk so that they
+ would survive browser restarts. curl adopted that file format to allow
+ sharing the cookies with browsers, only to see browsers move away from that
+ format. Modern browsers no longer use it, while curl still does.
+
+ The netscape cookie file format stores one cookie per physical line in the
+ file with a bunch of associated meta data, each field separated with
+ TAB. That file is called the cookiejar in curl terminology.
+
+ When libcurl saves a cookiejar, it creates a file header of its own in which
+ there is a URL mention that will link to the web version of this document.
+
+## Cookies with curl the command line tool
+
+ curl has a full cookie "engine" built in. If you just activate it, you can
+ have curl receive and send cookies exactly as mandated in the specs.
+
+ Command line options:
+
+ `-b, --cookie`
+
+ tell curl a file to read cookies from and start the cookie engine, or if it
+ isn't a file it will pass on the given string. -b name=var works and so does
+ -b cookiefile.
+
+ `-j, --junk-session-cookies`
+
+ when used in combination with -b, it will skip all "session cookies" on load
+ so as to appear to start a new cookie session.
+
+ `-c, --cookie-jar`
+
+ tell curl to start the cookie engine and write cookies to the given file
+ after the request(s)
+
+## Cookies with libcurl
+
+ libcurl offers several ways to enable and interface the cookie engine. These
+ options are the ones provided by the native API. libcurl bindings may offer
+ access to them using other means.
+
+ `CURLOPT_COOKIE`
+
+ Is used when you want to specify the exact contents of a cookie header to
+ send to the server.
+
+ `CURLOPT_COOKIEFILE`
+
+ Tell libcurl to activate the cookie engine, and to read the initial set of
+ cookies from the given file. Read-only.
+
+ `CURLOPT_COOKIEJAR`
+
+ Tell libcurl to activate the cookie engine, and when the easy handle is
+ closed save all known cookies to the given cookiejar file. Write-only.
+
+ `CURLOPT_COOKIELIST`
+
+ Provide detailed information about a single cookie to add to the internal
+ storage of cookies. Pass in the cookie as a HTTP header with all the details
+ set, or pass in a line from a netscape cookie file. This option can also be
+ used to flush the cookies etc.
+
+ `CURLINFO_COOKIELIST`
+
+ Extract cookie information from the internal cookie storage as a linked
+ list.
+
+## Cookies with javascript
+
+ These days a lot of the web is built up by javascript. The webbrowser loads
+ complete programs that render the page you see. These javascript programs
+ can also set and access cookies.
+
+ Since curl and libcurl are plain HTTP clients without any knowledge of or
+ capability to handle javascript, such cookies will not be detected or used.
+
+ Often, if you want to mimic what a browser does on such web sites, you can
+ record web browser HTTP traffic when using such a site and then repeat the
+ cookie operations using curl or libcurl.
diff --git a/docs/HTTP2.md b/docs/HTTP2.md
index b4e2983b..cc5a5b33 100644
--- a/docs/HTTP2.md
+++ b/docs/HTTP2.md
@@ -2,12 +2,13 @@ HTTP/2 with curl
================
[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt)
-[http2 explained](http://daniel.haxx.se/http2/)
+[http2 explained](https://daniel.haxx.se/http2/)
Build prerequisites
-------------------
- nghttp2
- - OpenSSL, NSS, GnutTLS or PolarSSL with a new enough version
+ - OpenSSL, libressl, BoringSSL, NSS, GnutTLS, mbedTLS, wolfSSL or SChannel
+ with a new enough version.
[nghttp2](https://nghttp2.org/)
-------------------------------
@@ -36,23 +37,32 @@ Over an https:// URL
If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use
ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce
an option that will cause libcurl to fail if not possible to use HTTP/2.
-Consider options to explicitly disable ALPN and/or NPN.
+
+`CURL_HTTP_VERSION_2TLS` was added in 7.47.0 as a way to ask libcurl to prefer
+HTTP/2 for HTTPS but stick to 1.1 by default for plain old HTTP connections.
ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is
for a similar purpose, was made prior to ALPN and is used for SPDY so early
HTTP/2 servers are implemented using NPN before ALPN support is widespread.
+`CURLOPT_SSL_ENABLE_ALPN` and `CURLOPT_SSL_ENABLE_NPN` are offered to allow
+applications to explicitly disable ALPN or NPN.
+
SSL libs
--------
The challenge is the ALPN and NPN support and all our different SSL
-backends. You may need a fairly updated SSL library version for it to
-provide the necessary TLS features. Right now we support:
-
- - OpenSSL: ALPN and NPN
- - NSS: ALPN and NPN
- - GnuTLS: ALPN
- - PolarSSL: ALPN
+backends. You may need a fairly updated SSL library version for it to provide
+the necessary TLS features. Right now we support:
+
+ - OpenSSL: ALPN and NPN
+ - libressl: ALPN and NPN
+ - BoringSSL: ALPN and NPN
+ - NSS: ALPN and NPN
+ - GnuTLS: ALPN
+ - mbedTLS: ALPN
+ - SChannel: ALPN
+ - wolfSSL: ALPN
Multiplexing
------------
@@ -84,7 +94,12 @@ in HTTP 1.1 style. This allows applications to work unmodified.
curl tool
---------
-curl offers the `--http2` command line option to enable use of HTTP/2
+curl offers the `--http2` command line option to enable use of HTTP/2.
+
+curl offers the `--http2-prior-knowledge` command line option to enable use of
+HTTP/2 without HTTP/1.1 Upgrade.
+
+Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections.
HTTP Alternative Services
-------------------------
@@ -95,13 +110,4 @@ same origin server that you get the response from. A browser or long-living
client can use that hint to create a new connection asynchronously. For
libcurl, we may introduce a way to bring such clues to the applicaton and/or
let a subsequent request use the alternate route
-automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-05)
-
-TODO
-----
-
- - Provide API to set priorities / dependencies of individual streams
-
- - Implement "prior-knowledge" HTTP/2 connecitons over clear text so that
- curl can connect with HTTP/2 at once without 1.1+Upgrade.
-
+automatically. [Spec](https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-14)
diff --git a/docs/INSTALL b/docs/INSTALL
index 45703188..2e1075ba 100644
--- a/docs/INSTALL
+++ b/docs/INSTALL
@@ -471,6 +471,15 @@ Win32
add '-DCURL_STATICLIB' to your CFLAGS. Otherwise the linker will look for
dynamic import symbols.
+ Legacy Windows and SSL
+ ----------------------
+
+ 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
======================
@@ -697,7 +706,7 @@ NetWare
Builds automatically created 8 times a day from current git are here:
http://www.gknw.net/mirror/curl/autobuilds/
the status of these builds can be viewed at the autobuild table:
- http://curl.haxx.se/dev/builds.html
+ https://curl.haxx.se/dev/builds.html
eCos
====
@@ -941,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.
@@ -961,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)
@@ -974,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
@@ -984,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.
@@ -1089,7 +1101,7 @@ GnuTLS https://www.gnu.org/software/gnutls/
Heimdal http://www.h5l.org/
libidn https://www.gnu.org/software/libidn/
libmetalink https://launchpad.net/libmetalink/
-libssh2 http://www.libssh2.org/
+libssh2 https://www.libssh2.org/
MIT Kerberos http://web.mit.edu/kerberos/www/dist/
NSS https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS
OpenLDAP http://www.openldap.org/
diff --git a/docs/INSTALL.devcpp b/docs/INSTALL.devcpp
index ee2d7036..f989d529 100644
--- a/docs/INSTALL.devcpp
+++ b/docs/INSTALL.devcpp
@@ -248,7 +248,7 @@ SSL Files
openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
development environment. The file may be downloaded at
-http://curl.haxx.se/download/.
+https://curl.haxx.se/download/.
2- Open the above zip file. You will find two files - SDL.dll,
SDL_mixer.dll. Install them in the directory C:\WINDOWS\SYSTEM32 for Win 9x
diff --git a/docs/INTERNALS b/docs/INTERNALS
index 4cd63b4e..698d66ec 100644
--- a/docs/INTERNALS
+++ b/docs/INTERNALS
@@ -1079,17 +1079,17 @@ for older and later versions as things don't change drastically that often.
the share API.
-[1]: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
-[2]: http://curl.haxx.se/libcurl/c/curl_easy_init.html
+[1]: https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
+[2]: https://curl.haxx.se/libcurl/c/curl_easy_init.html
[3]: http://c-ares.haxx.se/
[4]: https://tools.ietf.org/html/rfc7230 "RFC 7230"
-[5]: http://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
-[6]: http://curl.haxx.se/docs/manpage.html#--compressed
-[7]: http://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
-[8]: http://curl.haxx.se/libcurl/c/curl_multi_timeout.html
-[9]: http://curl.haxx.se/libcurl/c/curl_multi_setopt.html
-[10]: http://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
-[11]: http://curl.haxx.se/libcurl/c/curl_multi_perform.html
-[12]: http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
-[13]: http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
-[14]: http://curl.haxx.se/libcurl/c/curl_multi_info_read.html
+[5]: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
+[6]: https://curl.haxx.se/docs/manpage.html#--compressed
+[7]: https://curl.haxx.se/libcurl/c/curl_multi_socket_action.html
+[8]: https://curl.haxx.se/libcurl/c/curl_multi_timeout.html
+[9]: https://curl.haxx.se/libcurl/c/curl_multi_setopt.html
+[10]: https://curl.haxx.se/libcurl/c/CURLMOPT_TIMERFUNCTION.html
+[11]: https://curl.haxx.se/libcurl/c/curl_multi_perform.html
+[12]: https://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+[13]: https://curl.haxx.se/libcurl/c/curl_multi_add_handle.html
+[14]: https://curl.haxx.se/libcurl/c/curl_multi_info_read.html
diff --git a/docs/KNOWN_BUGS b/docs/KNOWN_BUGS
index 345dc45d..c91c388b 100644
--- a/docs/KNOWN_BUGS
+++ b/docs/KNOWN_BUGS
@@ -1,257 +1,516 @@
-These are problems known to exist at the time of this release. Feel free to
-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!
-
-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
- characters"
- http://curl.haxx.se/bug/view.cgi?id=1366
-
-89. Disabling HTTP Pipelining when there are ongoing transfers can lead to
- heap corruption and crash. http://curl.haxx.se/bug/view.cgi?id=1411
-
-88. libcurl doesn't support CURLINFO_FILETIME for SFTP transfers and thus
- curl's -R option also doesn't work then.
-
-87. -J/--remote-header-name doesn't decode %-encoded file names. RFC6266
- details how it should be done. The can of worm is basically that we have no
- charset handling in curl and ascii >=128 is a challenge for us. Not to
- mention that decoding also means that we need to check for nastiness that is
- attempted, like "../" sequences and the like. Probably everything to the left
- of any embedded slashes should be cut off.
- http://curl.haxx.se/bug/view.cgi?id=1294
-
-86. The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3
- and SMTP if a failure occurs during the authentication phase of a
- connection.
-
-85. Wrong STARTTRANSFER timer accounting for POST requests
- Timer works fine with GET requests, but while using POST the time for
- CURLINFO_STARTTRANSFER_TIME is wrong. While using POST
- CURLINFO_STARTTRANSFER_TIME minus CURLINFO_PRETRANSFER_TIME is near to zero
- every time.
- http://curl.haxx.se/bug/view.cgi?id=1213
-
-84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
- backends, so relying on this information in a generic app is flaky.
-
-82. When building with the Windows Borland compiler, it fails because the
- "tlib" tool doesn't support hyphens (minus signs) in file names and we have
- such in the build.
- http://curl.haxx.se/bug/view.cgi?id=1222
-
-81. When using -J (with -O), automatically resumed downloading together with
- "-C -" fails. Without -J the same command line works! This happens because
- the resume logic is worked out before the target file name (and thus its
- pre-transfer size) has been figured out!
- http://curl.haxx.se/bug/view.cgi?id=1169
-
-80. Curl doesn't recognize certificates in DER format in keychain, but it
- works with PEM.
- http://curl.haxx.se/bug/view.cgi?id=1065
-
-79. SMTP. When sending data to multiple recipients, curl will abort and return
- failure if one of the recipients indicate failure (on the "RCPT TO"
- command). Ordinary mail programs would proceed and still send to the ones
- that can receive data. This is subject for change in the future.
- http://curl.haxx.se/bug/view.cgi?id=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:
- http://curl.haxx.se/mail/lib-2009-10/0024.html
- http://curl.haxx.se/bug/view.cgi?id=896
-
- The WinSSL/schannel version verified to work as mentioned in
- http://curl.haxx.se/mail/lib-2012-07/0073.html
-
-73. if a connection is made to a FTP server but the server then just never
- sends the 220 response or otherwise is dead slow, libcurl will not
- acknowledge the connection timeout during that phase but only the "real"
- timeout - which may surprise users as it is probably considered to be the
- connect phase to most people. Brought up (and is being misunderstood) in:
- http://curl.haxx.se/bug/view.cgi?id=856
-
-72. "Pausing pipeline problems."
- http://curl.haxx.se/mail/lib-2009-07/0214.html
-
-70. Problem re-using easy handle after call to curl_multi_remove_handle
- http://curl.haxx.se/mail/lib-2009-07/0249.html
-
-68. "More questions about ares behavior".
- http://curl.haxx.se/mail/lib-2009-08/0012.html
-
-67. When creating multipart formposts. The file name part can be encoded with
- something beyond ascii but currently libcurl will only pass in the verbatim
- string the app provides. There are several browsers that already do this
- encoding. The key seems to be the updated draft to RFC2231:
- https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
-
-66. When using telnet, the time limitation options don't work.
- http://curl.haxx.se/bug/view.cgi?id=846
-
-65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
- multi interface is used, libcurl will fail if the (passive) TCP connection
- for the data transfer isn't more or less instant as the code does not
- properly wait for the connect to be confirmed. See test case 564 for a first
- shot at a test case.
-
-63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
- for any further requests or transfers. The work-around is then to close that
- handle with curl_easy_cleanup() and create a new. Some more details:
- http://curl.haxx.se/mail/lib-2009-04/0300.html
-
-61. If an upload using Expect: 100-continue receives an HTTP 417 response,
- it ought to be automatically resent without the Expect:. A workaround is
- for the client application to redo the transfer after disabling Expect:.
- http://curl.haxx.se/mail/archive-2008-02/0043.html
-
-60. libcurl closes the connection if an HTTP 401 reply is received while it
- is waiting for the the 100-continue response.
- http://curl.haxx.se/mail/lib-2008-08/0462.html
-
-58. It seems sensible to be able to use CURLOPT_NOBODY and
- CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
- not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
-
-56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
- server using the multi interface, the commands are not being sent correctly
- and instead the connection is "cancelled" (the operation is considered done)
- prematurely. There is a half-baked (busy-looping) patch provided in the bug
- report but it cannot be accepted as-is. See
- http://curl.haxx.se/bug/view.cgi?id=748
-
-55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
- library header files exporting symbols/macros that should be kept private
- to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
-
-52. Gautam Kachroo's issue that identifies a problem with the multi interface
- where a connection can be re-used without actually being properly
- SSL-negotiated:
- http://curl.haxx.se/mail/lib-2008-01/0277.html
-
-49. If using --retry and the transfer timeouts (possibly due to using -m or
- -y/-Y) the next attempt doesn't resume the transfer properly from what was
- downloaded in the previous attempt but will truncate and restart at the
- original position where it was at before the previous failed attempt. See
- http://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
- https://qa.mandriva.com/show_bug.cgi?id=22565
-
-48. If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
- connection is meant to be kept alive (like for NTLM proxy auth), the
- function will return prematurely and will confuse the rest of the HTTP
- protocol code. This should be very rare.
-
-43. There seems to be a problem when connecting to the Microsoft telnet server.
- http://curl.haxx.se/bug/view.cgi?id=649
-
-41. When doing an operation over FTP that requires the ACCT command (but not
- when logging in), the operation will fail since libcurl doesn't detect this
- and thus fails to issue the correct command:
- http://curl.haxx.se/bug/view.cgi?id=635
-
-39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
- http://curl.haxx.se/mail/lib-2007-01/0045.html
-
-38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
- http://curl.haxx.se/mail/lib-2007-01/0103.html
-
-35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
- bad when used with the multi interface.
-
-34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
- Also see #12. According to bug #1556528, even the SOCKS5 connect code does
- not do it right: http://curl.haxx.se/bug/view.cgi?id=604
-
-31. "curl-config --libs" will include details set in LDFLAGS when configure is
- run that might be needed only for building libcurl. Further, curl-config
- --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
-
-26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
- "system context" will make it use wrong(?) user name - at least when compared
- to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=535
-
-23. SOCKS-related problems:
- B) libcurl doesn't support FTPS over a SOCKS proxy.
- E) libcurl doesn't support active FTP over a SOCKS proxy
-
- We probably have even more bugs and lack of features when a SOCKS proxy is
- used.
-
-21. FTP ASCII transfers do not follow RFC959. They don't convert the data
- accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
- clearly describes how this should be done:
-
- The sender converts the data from an internal character representation to
- the standard 8-bit NVT-ASCII representation (see the Telnet
- specification). The receiver will convert the data from the standard
- form to his own internal form.
-
- Since 7.15.4 at least line endings are converted.
-
-16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
- <password>, and <fpath> components, encoded as "%00". The problem is that
- curl_unescape does not detect this, but instead returns a shortened C
- string. From a strict FTP protocol standpoint, NUL is a valid character
- within RFC 959 <string>, so the way to handle this correctly in curl would
- be to use a data structure other than a plain C string, one that can handle
- embedded NUL characters. From a practical standpoint, most FTP servers
- would not meaningfully support NUL characters within RFC 959 <string>,
- anyway (e.g., Unix pathnames may not contain NUL).
-
-14. Test case 165 might fail on a system which has libidn present, but with an
- old iconv version (2.1.3 is a known bad version), since it doesn't recognize
- the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
- test pass, but instead makes it fail on Solaris hosts that use its native
- iconv.
-
-13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
- The workaround is to combine --enable-ares with --disable-shared
-
-12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
- acknowledged after the actual TCP connect (during the SOCKS "negotiate"
- phase).
-
-10. To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
- provide a (fake) user name (this concerns both curl and the lib) because the
- code wrongly only considers authentication if there's a user name provided.
- http://curl.haxx.se/bug/view.cgi?id=440 How?
- http://curl.haxx.se/mail/lib-2004-08/0182.html
-
-8. Doing resumed upload over HTTP does not work with '-C -', because curl
- doesn't do a HEAD first to get the initial size. This needs to be done
- manually for HTTP PUT resume to work, and then '-C [index]'.
-
-6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
- such parts should be sent to the server as 'CWD ' (without an argument).
- The only exception to this rule, is that we knowingly break this if the
- empty part is first in the path, as then we use the double slashes to
- indicate that the user wants to reach the root dir (this exception SHALL
- remain even when this bug is fixed).
-
-5. libcurl doesn't treat the content-length of compressed data properly, as
- it seems HTTP servers send the *uncompressed* length in that header and
- libcurl thinks of it as the *compressed* length. Some explanations are here:
- http://curl.haxx.se/mail/lib-2003-06/0146.html
-
-2. If a HTTP server responds to a HEAD request and includes a body (thus
- violating the RFC2616), curl won't wait to read the response but just stop
- reading and return back. If a second request (let's assume a GET) is then
- immediately made to the same server again, the connection will be re-used
- fine of course, and the second request will be sent off but when the
- response is to get read, the previous response-body is what curl will read
- and havoc is what happens.
- More details on this is found in this libcurl mailing list thread:
- http://curl.haxx.se/mail/lib-2002-08/0000.html
+ _ _ ____ _
+ ___| | | | _ \| |
+ / __| | | | |_) | |
+ | (__| |_| | _ <| |___
+ \___|\___/|_| \_\_____|
+
+ Known Bugs
+
+These are problems and bugs known to exist at the time of this release. Feel
+free to 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 or changed somewhat since this was written!
+
+ 1. HTTP
+ 1.1 CURLFORM_CONTENTLEN in an array
+ 1.2 Disabling HTTP Pipelining
+ 1.3 STARTTRANSFER time is wrong for HTTP POSTs
+ 1.4 multipart formposts file name encoding
+ 1.5 Expect-100 meets 417
+ 1.6 Unnecessary close when 401 received waiting for 100
+ 1.7 CONNECT response larger than 16KB
+ 1.8 DNS timing is wrong for HTTP redirects
+ 1.9 HTTP/2 frames while in the connection pool kill reuse
+ 1.10 Strips trailing dot from host name
+
+ 2. TLS
+ 2.1 Hangs with PolarSSL
+ 2.2 CURLINFO_SSL_VERIFYRESULT has limited support
+ 2.3 DER in keychain
+ 2.4 GnuTLS backend skips really long certificate fields
+
+ 3. Email protocols
+ 3.1 IMAP SEARCH ALL truncated response
+ 3.2 No disconnect command
+ 3.3 SMTP to multiple recipients
+
+ 4. Command line
+ 4.1 -J with %-encoded file nameas
+ 4.2 -J with -C - fails
+ 4.3 --retry and transfer timeouts
+
+ 5. Build and portability issues
+ 5.1 Windows Borland compiler
+ 5.2 curl-config --libs contains private details
+ 5.3 libidn and old iconv
+ 5.4 AIX shared build with c-ares fails
+ 5.5 can't handle Unicode arguments in Windows
+
+ 6. Authentication
+ 6.1 NTLM authentication and unicode
+ 6.2 MIT Kerberos for Windows build
+ 6.3 NTLM in system context uses wrong name
+ 6.4 Negotiate needs a fake user name
+
+ 7. FTP
+ 7.1 FTP without or slow 220 response
+ 7.2 FTP with CONNECT and slow server
+ 7.3 FTP with NOBODY and FAILONERROR
+ 7.4 FTP with ACCT
+ 7.5 ASCII FTP
+ 7.6 FTP with NULs in URL parts
+ 7.7 FTP and empty path parts in the URL
+
+ 8. TELNET
+ 8.1 TELNET and time limtiations don't work
+ 8.2 Microsoft telnet server
+
+ 9. SFTP and SCP
+ 9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
+
+ 10. SOCKS
+ 10.1 SOCKS proxy connections are done blocking
+ 10.2 SOCKS don't support timeouts
+ 10.3 FTPS over SOCKS
+ 10.4 active FTP over a SOCKS
+
+ 11. Internals
+ 11.1 Curl leaks .onion hostnames in DNS
+ 11.2 error buffer not set if connection to multiple addresses fails
+
+ 12. LDAP and OpenLDAP
+ 12.1 OpenLDAP hangs after returning results
+
+ 13 TCP/IP
+ 13.1 --interface for ipv6 binds to unusable IP address
+
+
+==============================================================================
+
+1. HTTP
+
+1.1 CURLFORM_CONTENTLEN in an array
+
+ It is not possible to pass a 64-bit value using CURLFORM_CONTENTLEN with
+ CURLFORM_ARRAY, when compiled on 32-bit platforms that support 64-bit
+ integers. This is because the underlying structure 'curl_forms' uses a dual
+ purpose char* for storing these values in via casting. For more information
+ see the now closed related issue:
+ https://github.com/curl/curl/issues/608
+
+1.2 Disabling HTTP Pipelining
+
+ Disabling HTTP Pipelining when there are ongoing transfers can lead to
+ heap corruption and crash. https://curl.haxx.se/bug/view.cgi?id=1411
+
+1.3 STARTTRANSFER time is wrong for HTTP POSTs
+
+ Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with
+ GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME
+ is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus
+ CURLINFO_PRETRANSFER_TIME is near to zero every time.
+
+ https://github.com/curl/curl/issues/218
+ https://curl.haxx.se/bug/view.cgi?id=1213
+
+1.4 multipart formposts file name encoding
+
+ When creating multipart formposts. The file name part can be encoded with
+ something beyond ascii but currently libcurl will only pass in the verbatim
+ string the app provides. There are several browsers that already do this
+ encoding. The key seems to be the updated draft to RFC2231:
+ https://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
+
+1.5 Expect-100 meets 417
+
+ If an upload using Expect: 100-continue receives an HTTP 417 response, it
+ ought to be automatically resent without the Expect:. A workaround is for
+ the client application to redo the transfer after disabling Expect:.
+ https://curl.haxx.se/mail/archive-2008-02/0043.html
+
+1.6 Unnecessary close when 401 received waiting for 100
+
+ libcurl closes the connection if an HTTP 401 reply is received while it is
+ waiting for the the 100-continue response.
+ https://curl.haxx.se/mail/lib-2008-08/0462.html
+
+1.7 CONNECT response larger than 16KB
+
+ If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
+ connection is meant to be kept alive (like for NTLM proxy auth), the function
+ will return prematurely and will confuse the rest of the HTTP protocol
+ code. This should be very rare.
+
+1.8 DNS timing is wrong for HTTP redirects
+
+ When extracting timing information after HTTP redirects, only the last
+ transfer's results are returned and not the totals:
+ https://github.com/curl/curl/issues/522
+
+1.9 HTTP/2 frames while in the connection pool kill reuse
+
+ If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to
+ curl while the connection is held in curl's connection pool, the socket will
+ be found readable when considered for reuse and that makes curl think it is
+ dead and then it will be closed and a new connection gets created instead.
+
+ This is *best* fixed by adding monitoring to connections while they are kept
+ in the pool so that pings can be responded to appropriately.
+
+1.10 Strips trailing dot from host name
+
+ When given a URL wit a trailing dot for the host name part:
+ "https://example.com./", libcurl will strip off the dot and use the name
+ without a dot internally and send it dot-less in HTTP Host: headers and in
+ the TLS SNI field.
+
+ The HTTP part violates RFC 7230 section 5.4 but the SNI part is accordance
+ with RFC 6066 section 3.
+
+ URLs using these trailing dots are very rare in the wild and we have not seen
+ or gotten any real-world problems with such URLs reported. The popular
+ browsers seem to have stayed with not stripping the dot for both uses (thus
+ they violate RFC 6066 instead of RFC 7230).
+
+ Daniel took the discussion to the HTTPbis mailing list in March 2016:
+ https://lists.w3.org/Archives/Public/ietf-http-wg/2016JanMar/0430.html but
+ there was not major rush or interest to fix this. The impression I get is
+ that most HTTP people rather not rock the boat now and instead prioritize web
+ compatibility rather than to strictly adhere to these RFCs.
+
+ Our current approach allows a knowing client to send a custom HTTP header
+ with the dot added.
+
+ It can also be noted that while adding a trailing dot to the host name in
+ most (all?) cases will make the name resolve to the same set of IP addresses,
+ many HTTP servers will not happily accept the trailing dot there unless that
+ has been specificly configured to be a fine virtual host.
+
+ If URLs with trailing dots for host names become more popular or even just
+ used more than for just plain fun experiments, I'm sure we will have reason
+ to go back and reconsider.
+
+ See https://github.com/curl/curl/issues/716 for the discussion.
+
+
+2. TLS
+
+2.1 Hangs with PolarSSL
+
+ "curl_easy_perform hangs with imap and PolarSSL"
+ https://github.com/curl/curl/issues/334
+
+ Most likely, a fix similar to commit c111178bd4 (for mbedTLS) is
+ necessary. Or if we just wait a little longer we'll rip out all support for
+ PolarSSL instead...
+
+2.2 CURLINFO_SSL_VERIFYRESULT has limited support
+
+ CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS
+ backends, so relying on this information in a generic app is flaky.
+
+2.3 DER in keychain
+
+ Curl doesn't recognize certificates in DER format in keychain, but it works
+ with PEM. https://curl.haxx.se/bug/view.cgi?id=1065
+
+2.4 GnuTLS backend skips really long certificate fields
+
+ libcurl calls gnutls_x509_crt_get_dn() with a fixed buffer size and if the
+ field is too long in the cert, it'll just return an error and the field will
+ be displayed blank.
+
+
+3. Email protocols
+
+3.1 IMAP SEARCH ALL truncated response
+
+ 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 characters"
+ https://curl.haxx.se/bug/view.cgi?id=1366
+
+3.2 No disconnect command
+
+ The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
+ SMTP if a failure occurs during the authentication phase of a connection.
+
+3.3 SMTP to multiple recipients
+
+ When sending data to multiple recipients, curl will abort and return failure
+ if one of the recipients indicate failure (on the "RCPT TO"
+ command). Ordinary mail programs would proceed and still send to the ones
+ that can receive data. This is subject for change in the future.
+ https://curl.haxx.se/bug/view.cgi?id=1116
+
+
+4. Command line
+
+4.1 -J with %-encoded file nameas
+
+ -J/--remote-header-name doesn't decode %-encoded file names. RFC6266 details
+ how it should be done. The can of worm is basically that we have no charset
+ handling in curl and ascii >=128 is a challenge for us. Not to mention that
+ decoding also means that we need to check for nastiness that is attempted,
+ like "../" sequences and the like. Probably everything to the left of any
+ embedded slashes should be cut off.
+ https://curl.haxx.se/bug/view.cgi?id=1294
+
+4.2 -J with -C - fails
+
+ When using -J (with -O), automatically resumed downloading together with "-C
+ -" fails. Without -J the same command line works! This happens because the
+ resume logic is worked out before the target file name (and thus its
+ pre-transfer size) has been figured out!
+ https://curl.haxx.se/bug/view.cgi?id=1169
+
+4.3 --retry and transfer timeouts
+
+ If using --retry and the transfer timeouts (possibly due to using -m or
+ -y/-Y) the next attempt doesn't resume the transfer properly from what was
+ downloaded in the previous attempt but will truncate and restart at the
+ original position where it was at before the previous failed attempt. See
+ https://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
+ https://qa.mandriva.com/show_bug.cgi?id=22565
+
+
+5. Build and portability issues
+
+5.1 Windows Borland compiler
+
+ When building with the Windows Borland compiler, it fails because the "tlib"
+ tool doesn't support hyphens (minus signs) in file names and we have such in
+ the build. https://curl.haxx.se/bug/view.cgi?id=1222
+
+5.2 curl-config --libs contains private details
+
+ "curl-config --libs" will include details set in LDFLAGS when configure is
+ run that might be needed only for building libcurl. Further, curl-config
+ --cflags suffers from the same effects with CFLAGS/CPPFLAGS.
+
+5.3 libidn and old iconv
+
+ Test case 165 might fail on a system which has libidn present, but with an
+ old iconv version (2.1.3 is a known bad version), since it doesn't recognize
+ the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
+ test pass, but instead makes it fail on Solaris hosts that use its native
+ iconv.
+
+5.4 AIX shared build with c-ares fails
+
+ curl version 7.12.2 fails on AIX if compiled with --enable-ares. The
+ workaround is to combine --enable-ares with --disable-shared
+
+5.5 can't handle Unicode arguments in Windows
+
+ If a URL or filename can't be encoded using the user's current codepage then
+ it can only be encoded properly in the Unicode character set. Windows uses
+ UTF-16 encoding for Unicode and stores it in wide characters, however curl
+ and libcurl are not equipped for that at the moment. And, except for Cygwin,
+ Windows can't use UTF-8 as a locale.
+
+ https://curl.haxx.se/bug/?i=345
+ https://curl.haxx.se/bug/?i=731
+
+
+6. Authentication
+
+6.1 NTLM authentication and unicode
+
+ 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:
+ https://curl.haxx.se/mail/lib-2009-10/0024.html
+ https://curl.haxx.se/bug/view.cgi?id=896
+
+ The WinSSL/schannel version verified to work as mentioned in
+ https://curl.haxx.se/mail/lib-2012-07/0073.html
+
+6.2 MIT Kerberos for Windows build
+
+ libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
+ library header files exporting symbols/macros that should be kept private to
+ the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
+
+6.3 NTLM in system context uses wrong name
+
+ NTLM authentication using SSPI (on Windows) when (lib)curl is running in
+ "system context" will make it use wrong(?) user name - at least when compared
+ to what winhttp does. See https://curl.haxx.se/bug/view.cgi?id=535
+
+6.4 Negotiate needs a fake user name
+
+ To get HTTP Negotiate (SPNEGO) authentication to work fine, you need to
+ provide a (fake) user name (this concerns both curl and the lib) because the
+ code wrongly only considers authentication if there's a user name provided.
+ https://curl.haxx.se/bug/view.cgi?id=440 How?
+ https://curl.haxx.se/mail/lib-2004-08/0182.html
+
+
+7. FTP
+
+7.1 FTP without or slow 220 response
+
+ If a connection is made to a FTP server but the server then just never sends
+ the 220 response or otherwise is dead slow, libcurl will not acknowledge the
+ connection timeout during that phase but only the "real" timeout - which may
+ surprise users as it is probably considered to be the connect phase to most
+ people. Brought up (and is being misunderstood) in:
+ https://curl.haxx.se/bug/view.cgi?id=856
+
+7.2 FTP with CONNECT and slow server
+
+ When doing FTP over a socks proxy or CONNECT through HTTP proxy and the multi
+ interface is used, libcurl will fail if the (passive) TCP connection for the
+ data transfer isn't more or less instant as the code does not properly wait
+ for the connect to be confirmed. See test case 564 for a first shot at a test
+ case.
+
+7.3 FTP with NOBODY and FAILONERROR
+
+ It seems sensible to be able to use CURLOPT_NOBODY and CURLOPT_FAILONERROR
+ with FTP to detect if a file exists or not, but it is not working:
+ https://curl.haxx.se/mail/lib-2008-07/0295.html
+
+7.4 FTP with ACCT
+
+ When doing an operation over FTP that requires the ACCT command (but not when
+ logging in), the operation will fail since libcurl doesn't detect this and
+ thus fails to issue the correct command:
+ https://curl.haxx.se/bug/view.cgi?id=635
+
+7.5 ASCII FTP
+
+ FTP ASCII transfers do not follow RFC959. They don't convert the data
+ accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
+ clearly describes how this should be done:
+
+ The sender converts the data from an internal character representation to
+ the standard 8-bit NVT-ASCII representation (see the Telnet
+ specification). The receiver will convert the data from the standard
+ form to his own internal form.
+
+ Since 7.15.4 at least line endings are converted.
+
+7.6 FTP with NULs in URL parts
+
+ FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
+ <password>, and <fpath> components, encoded as "%00". The problem is that
+ curl_unescape does not detect this, but instead returns a shortened C string.
+ From a strict FTP protocol standpoint, NUL is a valid character within RFC
+ 959 <string>, so the way to handle this correctly in curl would be to use a
+ data structure other than a plain C string, one that can handle embedded NUL
+ characters. From a practical standpoint, most FTP servers would not
+ meaningfully support NUL characters within RFC 959 <string>, anyway (e.g.,
+ Unix pathnames may not contain NUL).
+
+7.7 FTP and empty path parts in the URL
+
+ libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
+ such parts should be sent to the server as 'CWD ' (without an argument). The
+ only exception to this rule, is that we knowingly break this if the empty
+ part is first in the path, as then we use the double slashes to indicate that
+ the user wants to reach the root dir (this exception SHALL remain even when
+ this bug is fixed).
+
+
+8. TELNET
+
+8.1 TELNET and time limtiations don't work
+
+ When using telnet, the time limitation options don't work.
+ https://curl.haxx.se/bug/view.cgi?id=846
+
+8.2 Microsoft telnet server
+
+ There seems to be a problem when connecting to the Microsoft telnet server.
+ https://curl.haxx.se/bug/view.cgi?id=649
+
+
+9. SFTP and SCP
+
+9.1 SFTP doesn't do CURLOPT_POSTQUOTE correct
+
+ When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server
+ using the multi interface, the commands are not being sent correctly and
+ instead the connection is "cancelled" (the operation is considered done)
+ prematurely. There is a half-baked (busy-looping) patch provided in the bug
+ report but it cannot be accepted as-is. See
+ https://curl.haxx.se/bug/view.cgi?id=748
+
+
+10. SOCKS
+
+10.1 SOCKS proxy connections are done blocking
+
+ Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very bad
+ when used with the multi interface.
+
+10.2 SOCKS don't support timeouts
+
+ The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
+ According to bug #1556528, even the SOCKS5 connect code does not do it right:
+ https://curl.haxx.se/bug/view.cgi?id=604
+
+ When connecting to a SOCK proxy, the (connect) timeout is not properly
+ acknowledged after the actual TCP connect (during the SOCKS "negotiate"
+ phase).
+
+10.3 FTPS over SOCKS
+
+ libcurl doesn't support FTPS over a SOCKS proxy.
+
+10.4 active FTP over a SOCKS
+
+ libcurl doesn't support active FTP over a SOCKS proxy
+
+
+11. Internals
+
+11.1 Curl leaks .onion hostnames in DNS
+
+ Curl sends DNS requests for hostnames with a .onion TLD. This leaks
+ information about what the user is attempting to access, and violates this
+ requirement of RFC7686: https://tools.ietf.org/html/rfc7686
+
+ Issue: https://github.com/curl/curl/issues/543
+
+11.2 error buffer not set if connection to multiple addresses fails
+
+ If you ask libcurl to resolve a hostname like example.com to IPv6 addresses
+ only. But you only have IPv4 connectivity. libcurl will correctly fail with
+ CURLE_COULDNT_CONNECT. But the error buffer set by CURLOPT_ERRORBUFFER
+ remains empty. Issue: https://github.com/curl/curl/issues/544
+
+
+12. LDAP and OpenLDAP
+
+12.1 OpenLDAP hangs after returning results
+
+ By configuration defaults, openldap automatically chase referrals on
+ secondary socket descriptors. The OpenLDAP backend is asynchronous and thus
+ should monitor all socket descriptors involved. Currently, these secondary
+ descriptors are not monitored, causing openldap library to never receive
+ data from them.
+
+ As a temporary workaround, disable referrals chasing by configuration.
+
+ The fix is not easy: proper automatic referrals chasing requires a
+ synchronous bind callback and monitoring an arbitrary number of socket
+ descriptors for a single easy handle (currently limited to 5).
+
+ Generic LDAP is synchronous: OK.
+
+ See https://github.com/curl/curl/issues/622 and
+ https://curl.haxx.se/mail/lib-2016-01/0101.html
+
+
+13 TCP/IP
+
+13.1 --interface for ipv6 binds to unusable IP address
+
+ Since IPv6 provides a lot of addresses with different scope, binding to an
+ IPv6 address needs to take the proper care so that it doesn't bind to a
+ locally scoped address as that is bound to fail.
+
+ https://github.com/curl/curl/issues/686
diff --git a/docs/LICENSE-MIXING b/docs/LICENSE-MIXING
index ccb6ada3..d8e36ca4 100644
--- a/docs/LICENSE-MIXING
+++ b/docs/LICENSE-MIXING
@@ -18,7 +18,7 @@ accompany your license with an exception[2]. This particular problem was
addressed when the Modified BSD license was created, which does not have the
announcement clause that collides with GPL.
-libcurl http://curl.haxx.se/docs/copyright.html
+libcurl https://curl.haxx.se/docs/copyright.html
Uses an MIT (or Modified BSD)-style license that is as liberal as
possible.
@@ -73,7 +73,7 @@ libressl http://www.libressl.org/
(May be used for SSL/TLS support) As an OpenSSL fork, it has the same
license as that.
-c-ares http://daniel.haxx.se/projects/c-ares/license.html
+c-ares https://daniel.haxx.se/projects/c-ares/license.html
(Used for asynchronous name resolves) Uses an MIT license that is very
liberal and imposes no restrictions on any other library or part you
@@ -116,7 +116,7 @@ OpenLDAP http://www.openldap.org/software/release/license.html
libcurl uses OpenLDAP as a shared library only, I have not heard of
anyone that ships OpenLDAP linked with libcurl in an app.
-libssh2 http://www.libssh2.org/
+libssh2 https://www.libssh2.org/
(Used for scp and sftp support) libssh2 uses a Modified BSD-style
license.
diff --git a/docs/MAIL-ETIQUETTE b/docs/MAIL-ETIQUETTE
index b6c0f452..75058009 100644
--- a/docs/MAIL-ETIQUETTE
+++ b/docs/MAIL-ETIQUETTE
@@ -33,7 +33,7 @@ MAIL ETIQUETTE
1.1 Mailing Lists
The mailing lists we have are all listed and described at
- http://curl.haxx.se/mail/
+ https://curl.haxx.se/mail/
Each mailing list is targeted to a specific set of users and subjects,
please use the one or the ones that suit you the most.
diff --git a/docs/MANUAL b/docs/MANUAL
index fb349485..08fdb57a 100644
--- a/docs/MANUAL
+++ b/docs/MANUAL
@@ -3,7 +3,7 @@ LATEST VERSION
You always find news about what's going on as well as the latest versions
from the curl web pages, located at:
- http://curl.haxx.se
+ https://curl.haxx.se
SIMPLE USAGE
@@ -824,7 +824,7 @@ LDAP
Working with LDAP URLs":
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
- RFC 2255, "The LDAP URL Format" http://curl.haxx.se/rfc/rfc2255.txt
+ RFC 2255, "The LDAP URL Format" https://curl.haxx.se/rfc/rfc2255.txt
To show you an example, this is how I can get all people from my local LDAP
server that has a certain sub-domain in their email address:
@@ -1011,7 +1011,7 @@ MAILING LISTS
For your convenience, we have several open mailing lists to discuss curl,
its development and things relevant to this. Get all info at
- http://curl.haxx.se/mail/. Some of the lists available are:
+ https://curl.haxx.se/mail/. Some of the lists available are:
curl-users
diff --git a/docs/Makefile.am b/docs/Makefile.am
index e3e27d33..284e5312 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, 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.
+# are also available at https://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
@@ -33,22 +33,22 @@ SUBDIRS = examples libcurl
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
-EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
- README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
- KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
- $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \
- MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE \
- SSL-PROBLEMS HTTP2.md ROADMAP.md
+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 INSTALL.devcpp \
+ MAIL-ETIQUETTE HTTP-COOKIES.md SECURITY RELEASE-PROCEDURE SSL-PROBLEMS \
+ HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md CODE_STYLE.md CHECKSRC.md
-MAN2HTML= roffit < $< >$@
+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)
diff --git a/docs/RELEASE-PROCEDURE b/docs/RELEASE-PROCEDURE
index fc31274e..479078fa 100644
--- a/docs/RELEASE-PROCEDURE
+++ b/docs/RELEASE-PROCEDURE
@@ -11,8 +11,8 @@ in the source code repo
- make sure all relevant changes are committed on the master branch
- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the
- tag and we use underscores instead of dots in the version number.
-
+ tag and we use underscores instead of dots in the version number.
+
- run "./maketgz 7.34.0" to build the release tarballs. It is important that
you run this on a machine with the correct set of autotools etc installed
as this is what then will be shipped and used by most users on *nix like
@@ -41,6 +41,11 @@ in the curl-www repo
(the web site then updates its contents automatically)
+on github
+---------
+
+- edit the newly made release tag so that it is listed as the latest release
+
inform
------
@@ -78,12 +83,10 @@ 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
-- December 2, 2015
-- January 27, 2016
-- March 23, 2016
+- March 23, 2016 (version 7.48.0)
- May 18, 2016
- July 13, 2016
- September 7, 2016
+- November 2, 2016
+- December 28, 2016
+- February 22, 2017
diff --git a/docs/RESOURCES b/docs/RESOURCES
index 760e7597..1ad8aac3 100644
--- a/docs/RESOURCES
+++ b/docs/RESOURCES
@@ -36,7 +36,7 @@ This document lists documents and standards used by curl.
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
- Also, read Netscape's specification at
- http://curl.haxx.se/rfc/cookie_spec.html
+ https://curl.haxx.se/rfc/cookie_spec.html
RFC 2183 - The Content-Disposition Header Field
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index eb52d187..d664403c 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -18,31 +18,18 @@ 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
+HTTP cookies
+------------
- 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.
+Two cookie drafts have been adopted by the httpwg in IETF and we should
+support them as the popular browsers will as well:
-- server push
+[Deprecate modification of 'secure' cookies from non-secure
+origins](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-00)
- 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.
+[Cookie Prefixes](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00)
-- provide option for HTTP/2 "prior knowledge" over clear text
-
- As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
- it speaks HTTP/2.
-
-- provide option to allow curl to default to HTTP/2 only when using HTTPS
-
- We could switch on HTTP/2 by-default for HTTPS quite easily and it
- shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
- lots of Upgrade: roundtrips that users won't like. So a separated option
- alternative makes sense.
+[Firefox bug report about secure cookies](https://bugzilla.mozilla.org/show_bug.cgi?id=976073)
SRV records
-----------
@@ -52,7 +39,9 @@ How to find services for specific domains/hosts.
HTTPS to proxy
--------------
-To avoid network traffic to/from the proxy getting snooped on.
+To avoid network traffic to/from the proxy getting snooped on. There's a git
+branch in the public git repository for this that we need to make sure works
+for all TLS backends and then merge!
curl_formadd()
--------------
@@ -61,12 +50,10 @@ make sure there's an easy handle passed in to `curl_formadd()`,
`curl_formget()` and `curl_formfree()` by adding replacement functions and
deprecating the old ones to allow custom mallocs and more
-third-party SASL
+Third-party SASL
----------------
-add support for third-party SASL libraries such as Cyrus SASL - may need to
-move existing native and SSPI based authentication into vsasl folder after
-reworking HTTP and SASL code
+Add support for third-party SASL libraries such as Cyrus SASL.
SASL authentication in LDAP
---------------------------
@@ -117,7 +104,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
diff --git a/docs/SECURITY b/docs/SECURITY
index ee844d80..7b245d7b 100644
--- a/docs/SECURITY
+++ b/docs/SECURITY
@@ -14,7 +14,7 @@ Publishing Information
----------------------
All known and public curl or libcurl related vulnerabilities are listed on
-[the curl web site security page](http://curl.haxx.se/docs/security.html).
+[the curl web site security page](https://curl.haxx.se/docs/security.html).
Security vulnerabilities should not be entered in the project's public bug
tracker unless the necessary configuration is in place to limit access to the
diff --git a/docs/SSL-PROBLEMS b/docs/SSL-PROBLEMS
index 36502672..e6398710 100644
--- a/docs/SSL-PROBLEMS
+++ b/docs/SSL-PROBLEMS
@@ -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,10 +53,14 @@ 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
-
+
Allow BEAST
BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means
@@ -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:
+
+ https://curl.haxx.se/docs/ssl-compared.html
diff --git a/docs/SSLCERTS b/docs/SSLCERTS
index 89e5bb62..7755609c 100644
--- a/docs/SSLCERTS
+++ b/docs/SSLCERTS
@@ -20,8 +20,8 @@ support.
It is about trust
-----------------
-This system is about trust. In your local CA cert bundle you have certs from
-*trusted* Certificate Authorities that you then can use to verify that the
+This system is about trust. In your local CA certificate store you have certs
+from *trusted* Certificate Authorities that you then can use to verify that the
server certificates you see are valid. They're signed by one of the CAs you
trust.
@@ -35,16 +35,16 @@ Certificate Verification
------------------------
libcurl performs peer SSL certificate verification by default. This is done
-by using CA cert bundle that the SSL library can use to make sure the peer's
-server certificate is valid.
+by using a CA certificate store that the SSL library can use to make sure the
+peer's server certificate is valid.
If you communicate with HTTPS, FTPS or other TLS-using servers using
-certificates that are signed by CAs present in the bundle, you can be sure
+certificates that are signed by CAs present in the store, you can be sure
that the remote server really is the one it claims to be.
If the remote server uses a self-signed certificate, if you don't install a CA
-cert bundle, if the server uses a certificate signed by a CA that isn't
-included in the bundle you use or if the remote host is an impostor
+cert store, if the server uses a certificate signed by a CA that isn't
+included in the store you use or if the remote host is an impostor
impersonating your favorite site, and you want to transfer files from this
server, do one of the following:
@@ -59,12 +59,22 @@ server, do one of the following:
With the curl command line tool: --cacert [file]
- 3. Add the CA cert for your server to the existing default CA cert bundle.
- The default path of the CA bundle used can be changed by running configure
- with the --with-ca-bundle option pointing out the path of your choice.
+ 3. Add the CA cert for your server to the existing default CA certificate
+ store. The default CA certificate store can changed at compile time with the
+ following configure options:
- To do this, you need to get the CA cert for your server in PEM format and
- then append that to your CA cert bundle.
+ --with-ca-bundle=FILE: use the specified file as CA certificate store. CA
+ certificates need to be concatenated in PEM format into this file.
+
+ --with-ca-path=PATH: use the specified path as CA certificate store. CA
+ certificates need to be stored as individual PEM files in this directory.
+ You may need to run c_rehash after adding files there.
+
+ If neither of the two options is specified, configure will try to auto-detect
+ a setting. It's also possible to explicitly not hardcode any default store
+ but rely on the built in default the crypto library may provide instead.
+ You can achieve that by passing both --without-ca-bundle and
+ --without-ca-path to the configure script.
If you use Internet Explorer, this is one way to get extract the CA cert
for a particular server:
@@ -76,7 +86,7 @@ server, do one of the following:
- Convert it from crt to PEM using the openssl tool:
openssl x509 -inform DES -in yourdownloaded.crt \
-out outcert.pem -text
- - Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
+ - Add the 'outcert.pem' to the CA certificate store or use it stand-alone
as described below.
If you use the 'openssl' tool, this is one way to get extract the CA cert
@@ -89,9 +99,9 @@ server, do one of the following:
- If you want to see the data in the certificate, you can do: "openssl
x509 -inform PEM -in certfile -text -out certdata" where certfile is
the cert you extracted from logfile. Look in certdata.
- - If you want to trust the certificate, you can append it to your
- cert bundle or use it stand-alone as described. Just remember that the
- security is no better than the way you obtained the certificate.
+ - If you want to trust the certificate, you can add it to your CA
+ certificate store or use it stand-alone as described. Just remember that
+ the security is no better than the way you obtained the certificate.
4. If you're using the curl command line tool, you can specify your own CA
cert path by setting the environment variable `CURL_CA_BUNDLE` to the path
@@ -109,13 +119,13 @@ server, do one of the following:
5. Get a better/different/newer CA cert bundle! One option is to extract the
one a recent Firefox browser uses by running 'make ca-bundle' in the curl
build tree root, or possibly download a version that was generated this
- way for you: [CA Extract](http://curl.haxx.se/docs/caextract.html)
+ way for you: [CA Extract](https://curl.haxx.se/docs/caextract.html)
Neglecting to use one of the above methods when dealing with a server using a
certificate that isn't signed by one of the certificates in the installed CA
-cert bundle, will cause SSL to report an error ("certificate verify failed")
-during the handshake and SSL will then refuse further communication with that
-server.
+certificate store, will cause SSL to report an error ("certificate verify
+failed") during the handshake and SSL will then refuse further communication
+with that server.
Certificate Verification with NSS
---------------------------------
@@ -123,8 +133,8 @@ Certificate Verification with NSS
If libcurl was built with NSS support, then depending on the OS distribution,
it is probably required to take some additional steps to use the system-wide
CA cert db. RedHat ships with an additional module, libnsspem.so, which
-enables NSS to read the OpenSSL PEM CA bundle. This library is missing in
-OpenSuSE, and without it, NSS can only work with its own internal formats. NSS
+enables NSS to read the OpenSSL PEM CA bundle. On openSUSE you can install
+p11-kit-nss-trust which makes NSS use the system wide CA certificate store. NSS
also has a new [database format](https://wiki.mozilla.org/NSS_Shared_DB).
Starting with version 7.19.7, libcurl automatically adds the 'sql:' prefix to
diff --git a/docs/THANKS b/docs/THANKS
index 89a738dd..e81192cf 100644
--- a/docs/THANKS
+++ b/docs/THANKS
@@ -4,6 +4,8 @@
If you have contributed but are missing here, please let us know!
+"Captain Basil"
+"Spoon Man"
Aaro Koskinen
Aaron Oneal
Aaron Orenstein
@@ -44,17 +46,20 @@ Alexander Krasnostavsky
Alexander Lazic
Alexander Pepper
Alexander Peslyak
+Alexander Traud
Alexander Zhuravlev
Alexey Borzov
Alexey Pesternikov
Alexey Simak
Alexey Zakhlestin
Alexis Carvalho
+Alexis La Goutte
Alfred Gebert
Allen Pulsifer
Alona Rossen
Amol Pattekar
Amr Shahin
+Anatol Belski
Anatoli Tubman
Anders Bakken
Anders Gustafsson
@@ -100,6 +105,7 @@ Anton Bychkov
Anton Kalmykov
Anton Malov
Anton Yabchinskiy
+Antonio Larrosa
Arkadiusz Miskiewicz
Armel Asselin
Arnaud Compan
@@ -131,12 +137,15 @@ Benbuck Nason
Benjamin Gerard
Benjamin Gilbert
Benjamin Johnson
+Benjamin Kircher
Benoit Neil
Benoit Sigoure
Bernard Leak
+Bernard Spil
Bernhard Reutner-Fischer
Bert Huijben
Bertrand Demiddelaer
+Bertrand Simonnet
Bill Doyle
Bill Egert
Bill Hoffman
@@ -152,6 +161,7 @@ Bob Richmond
Bob Schader
Bogdan Nicula
Brad Burdick
+Brad Fitzpatrick
Brad Harder
Brad Hards
Brad King
@@ -169,6 +179,7 @@ Brian Prodoehl
Brian R Duffy
Brian Ulm
Brock Noland
+Bru Rom
Bruce Mitchener
Bruno Thomsen
Bruno de Carvalho
@@ -205,6 +216,7 @@ Christian Krause
Christian Kurz
Christian Robottom Reis
Christian Schmitz
+Christian Stewart
Christian Vogt
Christian Weisgerber
Christophe Demory
@@ -218,6 +230,7 @@ Claes Jakobsson
Clarence Gardner
Clemens Gruber
Clifford Wolf
+Clint Clayton
Cody Jones
Cody Mack
Colby Ranger
@@ -226,6 +239,7 @@ Colin Hogben
Colin Watson
Colm Buckley
Constantine Sapuntzakis
+Cory Benfield
Cory Nelson
Craig A West
Craig Davison
@@ -234,6 +248,7 @@ Cris Bailiff
Cristian Rodríguez
Curt Bogmine
Cyrill Osterwalder
+Cédric Connes
Cédric Deltheil
D. Flinkmann
Da-Yoon Chung
@@ -241,8 +256,10 @@ Dag Ekengren
Dagobert Michelsen
Damian Dixon
Damien Adant
+Damien Vielpeau
Dan Becker
Dan C
+Dan Cristian
Dan Fandrich
Dan Locks
Dan Nelson
@@ -252,9 +269,15 @@ Dan Zitter
Daniel Black
Daniel Cater
Daniel Egger
+Daniel Hwang
Daniel Johnson
+Daniel Kahn Gillmor
+Daniel Lee Hwang
Daniel Melani
Daniel Mentz
+Daniel Schauenberg
+Daniel Seither
+Daniel Shahaf
Daniel Steinberg
Daniel Stenberg
Daniel Theron
@@ -268,7 +291,9 @@ Dave May
Dave Reisner
Dave Thompson
Dave Vasilevsky
+Davey Shafik
David Bau
+David Benjamin
David Binderman
David Blaikie
David Byron
@@ -297,10 +322,12 @@ David Woodhouse
David Wright
David Yan
Dengminwen
+Denis Feklushkin
Dennis Clarke
Derek Higgins
Detlef Schmier
Didier Brisebourg
+Diego Bes
Diego Casorran
Dilyan Palauzov
Dima Barsky
@@ -320,12 +347,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
@@ -335,6 +364,7 @@ Drake Arconis
Duane Cathey
Duncan Mac-Vicar Prett
Dustin Boswell
+Dusty Mabe
Dylan Ellicott
Dylan Salisbury
Early Ehlinger
@@ -364,12 +394,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
@@ -377,6 +409,7 @@ Erwin Authried
Ethan Glasser Camp
Eugene Kotlyarov
Evan Jordan
+Evgeny Grin
Evgeny Turnaev
Eygene Ryabinkin
Fabian Frank
@@ -384,12 +417,15 @@ 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
+Francisco Moraes
Frank Gevaerts
Frank Hempel
Frank Keeney
@@ -437,6 +473,7 @@ Glen A Johnson Jr.
Glen Nakamura
Glen Scott
Glenn Sheridan
+Google Inc.
Gordon Marler
Gorilla Maguila
Grant Erickson
@@ -453,6 +490,7 @@ Guido Berhoerster
Guillaume Arluison
Gunter Knauf
Gustaf Hui
+Gustavo Grieco
Gwenole Beauchesne
Gökhan Şengün
Götz Babin-Ebell
@@ -473,6 +511,7 @@ Heinrich Ko
Heinrich Schaefer
Helwing Lutz
Hendrik Visage
+Henrik Gaßmann
Henrik Storner
Henry Ludemann
Herve Amblard
@@ -497,9 +536,11 @@ Iida Yosiaki
Ilguiz Latypov
Ilja van Sprundel
Immanuel Gregoire
+Inca R
Ingmar Runge
Ingo Ralf Blum
Ingo Wilken
+Irfan Adilovic
Isaac Boukris
Ishan SinghLevett
Ivo Bellin Salarin
@@ -507,7 +548,9 @@ Jack Zhang
Jacky Lam
Jacob Meuser
Jacob Moshenko
+Jactry Zeng
Jad Chamcham
+Jaime Fullaondo
Jakub Zakrzewski
James Bursa
James Cheng
@@ -535,6 +578,7 @@ Jason Liu
Jason McDonald
Jason S. Priebe
Javier Barroso
+Javier G. Sogo
Jay Austin
Jayesh A Shah
Jaz Fresh
@@ -554,6 +598,7 @@ Jeff Lawson
Jeff Phillips
Jeff Pohlmeyer
Jeff Weber
+Jeffrey Walton
Jens Rantil
Jeremy Friesner
Jeremy Huddleston
@@ -568,6 +613,7 @@ Jerry Wu
Jes Badwal
Jesper Jensen
Jesse Noller
+Jesse Tan
Jie He
Jim Drash
Jim Freeman
@@ -590,6 +636,7 @@ Johan Nilsson
Johan van Selst
Johannes Bauer
Johannes Ernst
+Johannes Schindelin
John Bradshaw
John Coffey
John Crow
@@ -600,13 +647,16 @@ John Gardiner Myers
John Janssen
John Joseph Bachir
John Kelly
+John Kohl
John Lask
+John Levon
John Lightsey
John Marino
John Marshall
John McGowan
John P. McCaskey
John Suprock
+John Wanghui
John Wilkinson
John-Mark Bell
Johnny Luong
@@ -619,6 +669,7 @@ Jon Torrey
Jon Travis
Jon Turner
Jonas Forsman
+Jonas Minnberg
Jonas Schnelli
Jonatan Lander
Jonatan Vela
@@ -627,6 +678,7 @@ Jonathan Cardoso Machado Machado
Jonathan Hseu
Jonathan Nieder
Jongki Suwandi
+Joonas Kuorilehto
Jose Alf
Jose Kahan
Josef Wolf
@@ -636,6 +688,7 @@ Josue Andrade Gomes
Juan Barreto
Juan F. Codagnone
Juan Ignacio Hervás
+Juan RP
Judson Bishop
Juergen Wilke
Jukka Pihl
@@ -647,6 +700,7 @@ Julien Nabet
Julien Royer
Jun-ichiro itojun Hagino
Jurij Smakov
+Justin Ehlert
Justin Fletcher
Justin Karneges
Justin Maggard
@@ -654,15 +708,18 @@ Jörg Mueller-Tolk
Jörn Hartroth
K. R. Walker
Kai Engert
+Kai Noda
Kai Sommerfeld
Kai-Uwe Rommel
Kalle Vahlman
Kamil Dudka
+Kang Lin
Kang-Jin Lee
Karl Moerder
Karol Pietrzak
Kaspar Brand
Katie Wang
+Kazuho Oku
Kees Cook
Keith MacDonald
Keith McGuigan
@@ -689,6 +746,7 @@ Krishnendu Majumdar
Krister Johansen
Kristian Gunstone
Kristian Köhntopp
+Kurt Fankhauser
Kyle J. McKay
Kyle L. Huff
Kyle Sallee
@@ -705,6 +763,7 @@ Lars Nilsson
Lars Torben Wilson
Lau Hang Kin
Laurent Rabret
+Lauri Kasanen
Legoff Vincent
Lehel Bernadt
Leif W
@@ -720,6 +779,8 @@ Linas Vepstas
Lindley French
Ling Thio
Linus Nielsen Feltzing
+Linus Nordberg
+Lior Kaplan
Lisa Xu
Liviu Chircu
Liza Alenchery
@@ -732,6 +793,8 @@ Lucas Adamski
Lucas Pardue
Ludek Finstrle
Ludovico Cavedon
+Ludwig Nussel
+Lukas Ruzicka
Lukasz Czekierda
Luke Amery
Luke Call
@@ -742,6 +805,8 @@ Maciej Karpiuk
Maciej Puzio
Maciej W. Rozycki
Maks Naumov
+Maksim Kuzevanov
+Maksim Stsepanenka
Mamoru Tasaka
Mandy Wu
Manfred Schwarb
@@ -779,6 +844,7 @@ Markus Elfring
Markus Koetter
Markus Moeller
Markus Oberhumer
+Marquis de Muesli
Martijn Koster
Martin C. Martin
Martin Drasar
@@ -825,7 +891,9 @@ Michael Day
Michael Goffioul
Michael Jahn
Michael Jerris
+Michael Kalinin
Michael Kaufmann
+Michael König
Michael Mealling
Michael Mueller
Michael Osipov
@@ -835,8 +903,10 @@ Michael Stillwell
Michael Wallner
Michal Bonino
Michal Marek
+Michał Fita
Michał Górny
Michał Kowalczyk
+Michał Piechowski
Michel Promonet
Michele Bini
Miguel Angel
@@ -862,12 +932,14 @@ Mohamed Lrhazi
Mohammad AlSaleh
Mohun Biswas
Mostyn Bramley-Moore
+Moti Avrahami
Myk Taylor
Nach M. S.
Nagai H
Nathan Coulter
Nathan O'Sullivan
Nathanael Nerode
+Nathaniel Waisbrot
Naveen Chandran
Naveen Noel
Neil Bowers
@@ -894,15 +966,20 @@ Nis Jorgensen
Nobuhiro Ban
Nodak Sodak
Norbert Frese
+Norbert Kett
Norbert Novotny
+Octavio Schroeder
Ofer
Ola Mork
Olaf Flebbe
Olaf Stüben
+Oleg Pudeyev
Oliver Gondža
+Oliver Graute
Oliver Kuckertz
Oliver Schindler
Olivier Berger
+Orange Tsai
Oren Souroujon
Oren Tirosh
Orgad Shaneh
@@ -944,6 +1021,7 @@ Pawel A. Gajda
Pawel Kierski
Pedro Larroy
Pedro Neves
+Per Malmberg
Peter Bray
Peter Forret
Peter Gal
@@ -991,6 +1069,7 @@ Quanah Gibson-Mount
Quinn Slack
Radu Simionescu
Rafa Muyo
+Rafael Antonio
Rafael Sagula
Rafayel Mkrtchyan
Rafaël Carré
@@ -998,6 +1077,7 @@ Rainer Canavan
Rainer Jung
Rainer Koenig
Rajesh Naganathan
+Rajkumar Mandal
Ralf S. Engelschall
Ralph Beckmann
Ralph Mitchell
@@ -1007,6 +1087,7 @@ Ravi Pratap
Ray Dassen
Ray Pekowski
Ray Satiro
+Razvan Cojocaru
Reinout van Schouwen
Remi Gacogne
Renato Botelho
@@ -1027,10 +1108,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
@@ -1051,9 +1134,11 @@ Robin Cornelius
Robin Johnson
Robin Kay
Robson Braga Araujo
+Rod Widdowson
Rodney Simmons
Rodric Glaser
Rodrigo Silva
+Roger Leigh
Roland Blom
Roland Krikava
Roland Zimmermann
@@ -1078,6 +1163,7 @@ Salvador Dávila
Salvatore Sorrentino
Sam Deane
Sam Hurst
+Sam Roth
Sam Schanken
Sampo Kellomaki
Samuel Díaz García
@@ -1097,23 +1183,27 @@ Scott Cantor
Scott Davis
Scott McCreary
Sean Boudreau
+Sebastian Pohlschmidt
Sebastian Rasmussen
Senthil Raja Velu
Sergei Nikulov
Sergey Tatarincev
Sergio Ballestrero
Seshubabu Pasam
+Seth Mos
Sh Diao
Shao Shuchao
Sharad Gupta
Shard
Shawn Landden
Shawn Poulson
+Shine Fan
Shmulik Regev
Siddhartha Prakash Jain
-Sidney San Martin
+Sidney San Martín
Siegfried Gyuricsko
Simon Dick
+Simon H.
Simon Josefsson
Simon Liu
Song Ma
@@ -1157,16 +1247,21 @@ 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
+Taneli Vähäkangas
Tanguy Fautre
Tatsuhiro Tsujikawa
Temprimus
+Terri Oda
+Theodore Dubois
Thomas Braun
+Thomas Glanzmann
Thomas J. Moore
Thomas Klausner
Thomas L. Shinnick
@@ -1174,6 +1269,7 @@ Thomas Lopatic
Thomas Ruecker
Thomas Schwinge
Thomas Tonino
+Thorsten Schöning
Tiit Pikma
Till Maas
Tim Ansell
@@ -1184,10 +1280,12 @@ Tim Costello
Tim Harder
Tim Heckman
Tim Newsome
-Tim Ruehsen
+Tim Rühsen
Tim Sneddon
+Tim Stack
Tim Starling
Timo Sirainen
+Timotej Lazar
Tinus van den Berg
Tobias Markus
Tobias Rundström
@@ -1195,7 +1293,6 @@ Tobias Stoeckmann
Toby Peterson
Todd A Ouska
Todd Kulesza
-Todd Ouska
Todd Vierling
Tom Benoist
Tom Donovan
@@ -1209,6 +1306,7 @@ Tom Sparrow
Tom Wright
Tom Zerucha
Tomas Hoger
+Tomas Jakobsson
Tomas Mlcoch
Tomas Pospisek
Tomas Szepe
@@ -1225,6 +1323,7 @@ Torsten Foertsch
Toshio Kuratomi
Toshiyuki Maezawa
Traian Nicolescu
+Travis Burtrum
Troels Walsted Hansen
Troy Engel
Tupone Alfredo
@@ -1255,9 +1354,11 @@ Vojtech Janota
Vojtech Minarik
Vojtěch Král
Vsevolod Novikov
+W. Mark Kubacki
Waldek Kozba
Walter J. Mack
Ward Willats
+Warp Kawada
Warren Menzer
Wayne Haigh
Werner Koch
@@ -1272,6 +1373,7 @@ Wojciech Zwiefka
Wouter Van Rooy
Wu Yongzheng
Xavier Bouchoux
+Xiangbin Li
Yaakov Selkowitz
Yamada Yasuharu
Yang Tse
@@ -1291,7 +1393,18 @@ Zdenek Pavlas
Zekun Ni
Zmey Petroff
Zvi Har'El
+asavah on github
+baumanj on github
+bsammon on github
+dkjjr89 on github
+eXeC64 on github
+jveazey on github
+kreshano on github
+marc-groundctl on github
+neex on github
nk
+silveja1 on github
swalkaus at yahoo.com
tommink[at]post.pl
+Štefan Kremeň
Никита Дорохин
diff --git a/docs/THANKS-filter b/docs/THANKS-filter
index 39a8a4c4..defd6051 100644
--- a/docs/THANKS-filter
+++ b/docs/THANKS-filter
@@ -48,5 +48,23 @@ s/Rodrigo Silva (MestreLion)/Rodrigo Silva/
s/tetetest tetetest//
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/Jonathan Cardoso$/Jonathan Cardoso Machado/
+s/Linus Nielsen$/Linus Nielsen Feltzing/
+s/Todd Ouska$/Todd A Ouska/
+s/Tim Ruehsen/Tim Rühsen/
+s/Michael Koenig/Michael König/
+s/moparisthebest/Travis Burtrum/
+s/Jan-E/Jan Ehrhardt/
+s/Paras S$/Paras Sethia/
+s/Cristian Rodr\xEDguez$/Cristian Rodríguez/
+s/Sidney San Mart\xEDn$/Sidney San Martín/
+s/Sidney San Martin$/Sidney San Martín/
+s/Taneli V\xE4h\xE4kangas$/Taneli Vähäkangas/
+s/Taneli Vahakangas$/Taneli Vähäkangas/
+s/Никита Дорохин./Никита Дорохин/
+s/upstream tests 305//
+s/ (edited)//
+s/Jean-Philippe Barette-LaPierre$/Jean-Philippe Barrette-LaPierre/
+s/Joern Hartroth$/Jörn Hartroth/
+s/Hongli Lai (Phusion)$/Hongli Lai/
+s/github user 'kreshano'$/kreshano on github/
diff --git a/docs/TODO b/docs/TODO
index 65bf2ff7..f3b06000 100644
--- a/docs/TODO
+++ b/docs/TODO
@@ -25,11 +25,21 @@
1.7 Detect when called from within callbacks
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
+ 1.16 Try to URL encode given URL
+ 1.17 Add support for IRIs
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
+ 2.5 Edge-triggered sockets should work
3. Documentation
3.1 Update date and version in man pages
@@ -50,6 +60,7 @@
5.4 SPDY
5.5 auth= in URLs
5.6 Refuse "downgrade" redirects
+ 5.7 More compressions
6. TELNET
6.1 ditch stdin
@@ -60,22 +71,23 @@
7. SMTP
7.1 Pipelining
7.2 Enhanced capability support
-
+
8. POP3
8.1 Pipelining
8.2 Enhanced capability support
-
+
9. IMAP
9.1 Enhanced capability support
-
+
10. LDAP
10.1 SASL based authentication mechanisms
-
+
11. SMB
11.1 File listing support
11.2 Honor file timestamps
11.3 Use NTLMv2
-
+ 11.4 Create remote directories
+
12. New protocols
12.1 RSYNC
@@ -101,8 +113,9 @@
16. SASL
16.1 Other authentication mechanisms
16.2 Add QOP support to GSSAPI authentication
-
- 17. Client
+ 16.3 Support binary messages (i.e.: non-base64)
+
+ 17. Command line tool
17.1 sync
17.2 glob posts
17.3 prevent file overwriting
@@ -112,6 +125,11 @@
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
+ 17.11 -w output to stderr
+ 17.12 keep running, read instructions from pipe/socket
+ 17.13 support metalink in http headers
+ 17.14 --fail without --location should treat 3xx as a failure
18. Build
18.1 roffit
@@ -122,6 +140,7 @@
19.3 more protocols supported
19.4 more platforms supported
19.5 Add support for concurrent connections
+ 19.6 Use the RFC6265 test suite
20. Next SONAME bump
20.1 http-style HEAD output for FTP
@@ -137,8 +156,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
==============================================================================
@@ -163,7 +180,7 @@
signal handler back into the library with a sigsetjmp, which effectively
causes libcurl to continue running within the signal handler. This is
non-portable and could cause problems on some platforms. A discussion on the
- problem is available at http://curl.haxx.se/mail/lib-2008-09/0197.html
+ problem is available at https://curl.haxx.se/mail/lib-2008-09/0197.html
Also, alarm() provides timeout resolution only to the nearest second. alarm
ought to be replaced by setitimer on systems that support it.
@@ -218,6 +235,82 @@
A name resolve that has failed is likely to fail when made again within a
short period of time. Currently we only cache positive responses.
+1.10 Support IDNA2008
+
+ International Domain Names are supported in libcurl since years back, powered
+ 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/curl/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:
+ https://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.
+
+1.16 Try to URL encode given URL
+
+ Given a URL that for example contains spaces, libcurl could have an option
+ that would try somewhat harder than it does now and convert spaces to %20 and
+ perhaps URL encoded byte values over 128 etc (basically do what the redirect
+ following code already does).
+
+ https://github.com/curl/curl/issues/514
+
+1.17 Add support for IRIs
+
+ IRIs (RFC 3987) allow localized, non-ascii, names in the URL. To properly
+ support this, curl/libcurl would need to translate/encode the given input
+ from the input string encoding into percent encoded output "over the wire".
+
+ To make that work smoothly for curl users even on Windows, curl would
+ probably need to be able to convert from several input encodings.
+
2. libcurl - multi interface
@@ -235,13 +328,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
@@ -249,6 +336,26 @@
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.
+
+2.5 Edge-triggered sockets should work
+
+ The multi_socket API should work with edge-triggered socket events. One of
+ the internal actions that need to be improved for this to work perfectly is
+ the 'maxloops' handling in transfer.c:readwrite_data().
3. Documentation
@@ -272,7 +379,7 @@
When trying to connect passively to a server which only supports active
connections, libcurl returns CURLE_FTP_WEIRD_PASV_REPLY and closes the
connection. There could be a way to fallback to an active connection (and
- vice versa). http://curl.haxx.se/bug/feature.cgi?id=1754793
+ vice versa). https://curl.haxx.se/bug/feature.cgi?id=1754793
4.3 Earlier bad letter detection
@@ -309,13 +416,13 @@ This is not detailed in any FTP specification.
5.1 Better persistency for HTTP 1.0
"Better" support for persistent connections over HTTP 1.0
- http://curl.haxx.se/bug/feature.cgi?id=1089001
+ https://curl.haxx.se/bug/feature.cgi?id=1089001
5.2 support FF3 sqlite cookie files
Firefox 3 is changing from its former format to a a sqlite database instead.
We should consider how (lib)curl can/should support this.
- http://curl.haxx.se/bug/feature.cgi?id=1871388
+ https://curl.haxx.se/bug/feature.cgi?id=1871388
5.3 Rearrange request header order
@@ -345,17 +452,25 @@ This is not detailed in any FTP specification.
For example:
http://test:pass;auth=NTLM@example.com would be equivalent to specifying --user
- test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
+ test:pass;auth=NTLM or --user test:pass --ntlm from the command line.
Additionally this should be implemented for proxy base URLs as well.
5.6 Refuse "downgrade" redirects
- See https://github.com/bagder/curl/issues/226
+ See https://github.com/curl/curl/issues/226
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
@@ -435,6 +550,11 @@ The timestamp of the transferred file should reflect that of the original file.
Currently the SMB authentication uses NTLMv1.
+11.4 Create remote directories
+
+Support for creating remote directories when uploading a file to a directory
+that doesn't exist on the server, just like --ftp-create-dirs.
+
12. New protocols
12.1 RSYNC
@@ -447,7 +567,7 @@ Currently the SMB authentication uses NTLMv1.
13.1 Disable specific versions
Provide an option that allows for disabling specific SSL versions, such as
- SSLv2 http://curl.haxx.se/bug/feature.cgi?id=1767276
+ SSLv2 https://curl.haxx.se/bug/feature.cgi?id=1767276
13.2 Provide mutex locking API
@@ -458,7 +578,7 @@ Currently the SMB authentication uses NTLMv1.
13.3 Evaluate SSL patches
Evaluate/apply Gertjan van Wingerde's SSL patches:
- http://curl.haxx.se/mail/lib-2004-03/0087.html
+ https://curl.haxx.se/mail/lib-2004-03/0087.html
13.4 Cache OpenSSL contexts
@@ -496,9 +616,9 @@ Currently the SMB authentication uses NTLMv1.
https://www.rfc-editor.org/rfc/rfc6698.txt
An initial patch was posted by Suresh Krishnaswamy on March 7th 2013
- (http://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
+ (https://curl.haxx.se/mail/lib-2013-03/0075.html) but it was a too simple
approach. See Daniel's comments:
- http://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
+ https://curl.haxx.se/mail/lib-2013-03/0103.html . libunbound may be the
correct library to base this development on.
14. GnuTLS
@@ -553,7 +673,7 @@ Currently the SMB authentication uses NTLMv1.
Add support for other authentication mechanisms such as OLP,
GSS-SPNEGO and others.
-
+
16.2 Add QOP support to GSSAPI authentication
Currently the GSSAPI authentication only supports the default QOP of auth
@@ -561,7 +681,11 @@ Currently the SMB authentication uses NTLMv1.
with integrity protection) and auth-conf (Authentication with integrity and
privacy protection).
-17. Client
+16.3 Support binary messages (i.e.: non-base64)
+
+ Mandatory to support LDAP SASL authentication.
+
+17. Command line tool
17.1 sync
@@ -590,7 +714,7 @@ Currently the SMB authentication uses NTLMv1.
The client could be told to use maximum N simultaneous parallel transfers and
then just make sure that happens. It should of course not make more than one
connection to the same remote host. This would require the client to use the
- multi interface. http://curl.haxx.se/bug/feature.cgi?id=1558595
+ multi interface. https://curl.haxx.se/bug/feature.cgi?id=1558595
17.5 provide formpost headers
@@ -608,32 +732,78 @@ Currently the SMB authentication uses NTLMv1.
17.6 warning when setting an option
- Display a warning when libcurl returns an error when setting an option.
- This can be useful to tell when support for a particular feature hasn't been
- compiled into the library.
+ Display a warning when libcurl returns an error when setting an option.
+ This can be useful to tell when support for a particular feature hasn't been
+ compiled into the library.
17.7 warning when sending binary output to terminal
- Provide a way that prompts the user for confirmation before binary data is
- sent to the terminal, much in the style 'less' does it.
+ Provide a way that prompts the user for confirmation before binary data is
+ sent to the terminal, much in the style 'less' does it.
17.8 offer color-coded HTTP header output
- By offering different color output on the header name and the header
- contents, they could be made more readable and thus help users working on
- HTTP services.
+ By offering different color output on the header name and the header
+ contents, they could be made more readable and thus help users working on
+ HTTP services.
17.9 Choose the name of file in braces for complex URLs
- When using braces to download a list of URLs and you use complicated names
- in the list of alternatives, it could be handy to allow curl to use other
- names when saving.
+ When using braces to download a list of URLs and you use complicated names
+ in the list of alternatives, it could be handy to allow curl to use other
+ names when saving.
+
+ Consider a way to offer that. Possibly like
+ {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
+ colon is the output name.
+
+ See https://github.com/curl/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/curl/curl/issues/322
+
+17.11 -w output to stderr
+
+ -w is quite useful, but not to those of us who use curl without -o or -O
+ (such as for scripting through a higher level language). It would be nice to
+ have an option that is exactly like -w but sends it to stderr
+ instead. Proposed name: --write-stderr. See
+ https://github.com/curl/curl/issues/613
+
+17.12 keep running, read instructions from pipe/socket
+
+ Provide an option that makes curl not exit after the last URL (or even work
+ without a given URL), and then make it read instructions passed on a pipe or
+ over a socket to make further instructions so that a second subsequent curl
+ invoke can talk to the still running instance and ask for transfers to get
+ done, and thus maintain its connection pool, DNS cache and more.
+
+17.13 support metalink in http headers
+
+ Curl has support for downloading a metalink xml file, processing it, and then
+ downloading the target of the metalink. This is done via the --metalink option.
+ It would be nice if metalink also supported downloading via metalink
+ information that is stored in HTTP headers (RFC 6249). Theoretically this could
+ also be supported with the --metalink option.
+
+ See https://tools.ietf.org/html/rfc6249
- Consider a way to offer that. Possibly like
- {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the
- colon is the output name.
+ See also https://lists.gnu.org/archive/html/bug-wget/2015-06/msg00034.html for
+ an implematation of this in wget.
- See https://github.com/bagder/curl/issues/221
+17.14 --fail without --location should treat 3xx as a failure
+
+ To allow a command line like this to detect a redirect and consider it a
+ failure:
+
+ curl -v --fail -O https://example.com/curl-7.48.0.tar.gz
+
+ ... --fail must treat 3xx responses as failures too. The least problematic
+ way to implement this is probably to add that new logic in the command line
+ tool only and not in the underlying CURLOPT_FAILONERROR logic.
18. Build
@@ -680,6 +850,16 @@ Currently the SMB authentication uses NTLMv1.
and thus the wait for connections loop is never entered to receive the second
connection.
+19.6 Use the RFC6265 test suite
+
+ A test suite made for HTTP cookies (RFC 6265) by Adam Barth is available at
+ https://github.com/abarth/http-state/tree/master/tests
+
+ It'd be really awesome if someone would write a script/setup that would run
+ curl with that test suite and detect deviances. Ideally, that would even be
+ incorporated into our regular test suite.
+
+
20. Next SONAME bump
20.1 http-style HEAD output for FTP
@@ -784,22 +964,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
-
diff --git a/docs/TheArtOfHttpScripting b/docs/TheArtOfHttpScripting
index 76faee4a..047db809 100644
--- a/docs/TheArtOfHttpScripting
+++ b/docs/TheArtOfHttpScripting
@@ -136,7 +136,7 @@ The Art Of Scripting HTTP Requests Using Curl
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you've seen URLs like
- http://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
+ https://curl.haxx.se or https://yourbank.com a million times. RFC 3986 is the
canonical spec. And yeah, the formal name is not URL, it is URI.
2.2 Host
@@ -203,7 +203,7 @@ The Art Of Scripting HTTP Requests Using Curl
issues a GET request to the server and receives the document it asked for.
If you issue the command line
- curl http://curl.haxx.se
+ curl https://curl.haxx.se
you get a web page returned in your terminal window. The entire HTML document
that that URL holds.
@@ -628,7 +628,7 @@ The Art Of Scripting HTTP Requests Using Curl
More about server certificate verification and ca cert bundles can be read
in the SSLCERTS document, available online here:
- http://curl.haxx.se/docs/sslcerts.html
+ https://curl.haxx.se/docs/sslcerts.html
At times you may end up with your own CA cert store and then you can tell
curl to use that to verify the server's certificate:
@@ -755,4 +755,4 @@ The Art Of Scripting HTTP Requests Using Curl
14.2 Sites
- http://curl.haxx.se is the home of the cURL project
+ https://curl.haxx.se is the home of the cURL project
diff --git a/docs/curl-config.1 b/docs/curl-config.1
index 14a9d2ba..4c1e323c 100644
--- a/docs/curl-config.1
+++ b/docs/curl-config.1
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/curl.1 b/docs/curl.1
index 11b95d4e..f2d48f17 100644
--- a/docs/curl.1
+++ b/docs/curl.1
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -51,16 +51,16 @@ braces as in:
or you can get sequences of alphanumeric series by using [] as in:
- ftp://ftp.numericals.com/file[1-100].txt
+ ftp://ftp.example.com/file[1-100].txt
- ftp://ftp.numericals.com/file[001-100].txt (with leading zeros)
+ ftp://ftp.example.com/file[001-100].txt (with leading zeros)
- ftp://ftp.letters.com/file[a-z].txt
+ ftp://ftp.example.com/file[a-z].txt
Nested sequences are not supported, but you can use several ones next to each
other:
- http://any.org/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
+ http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html
You can specify any amount of URLs on the command line. They will be fetched
in a sequential manner in the specified order.
@@ -68,9 +68,9 @@ in a sequential manner in the specified order.
You can specify a step counter for the ranges to get every Nth number or
letter:
- http://www.numericals.com/file[1-100:10].txt
+ http://example.com/file[1-100:10].txt
- http://www.letters.com/file[a-z:2].txt
+ http://example.com/file[a-z:2].txt
When using [] or {} sequences when invoked from a command line prompt, you
probably have to put the full URL within double quotes to avoid the shell from
@@ -150,6 +150,14 @@ version. (Added in 7.33.0)
.IP "--http2"
(HTTP) Tells curl to issue its requests using HTTP 2. This requires that the
underlying libcurl was built to support it. (Added in 7.33.0)
+.IP "--http2-prior-knowledge"
+(HTTP) Tells curl to issue its non-TLS HTTP requests using HTTP/2 without
+HTTP/1.1 Upgrade. It requires prior knowledge that the server supports HTTP/2
+straight away. HTTPS requests will still do HTTP/2 the standard way with
+negotiated protocol version in the TLS handshake.
+
+HTTP/2 support in general also requires that the underlying libcurl was built
+to support it. (Added in 7.49.0)
.IP "--no-npn"
Disable the NPN TLS extension. NPN is enabled by default if libcurl was built
with an SSL library that supports NPN. NPN is used by a libcurl that supports
@@ -171,10 +179,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,16 +221,25 @@ 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
-cookie file format.
+file to read cookies from should be plain HTTP headers (Set-Cookie style) or
+the Netscape/Mozilla cookie file format.
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 +271,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>"
@@ -417,6 +438,9 @@ the traditional PORT command.
\fB--eprt\fP can be used to explicitly enable EPRT again and \fB--no-eprt\fP
is an alias for \fB--disable-eprt\fP.
+If the server is an IPv6 host, this option will have no effect as EPRT is
+necessary then.
+
Disabling EPRT only changes the active behavior. If you want to switch to
passive mode you need to not use \fI-P, --ftp-port\fP or force it with
\fI--ftp-pasv\fP.
@@ -428,6 +452,9 @@ but with this option, it will not try using EPSV.
\fB--epsv\fP can be used to explicitly enable EPSV again and \fB--no-epsv\fP
is an alias for \fB--disable-epsv\fP.
+If the server is an IPv6 host, this option will have no effect as EPSV is
+necessary then.
+
Disabling EPSV only changes the passive behavior. If you want to switch to
active mode you need to use \fI-P, --ftp-port\fP.
.IP "--dns-interface <interface>"
@@ -475,10 +502,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
@@ -510,6 +537,13 @@ after having run curl.
(SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
is used to seed the random engine for SSL connections. See also the
\fI--random-file\fP option.
+.IP "--expect100-timeout <seconds>"
+(HTTP) Maximum time in seconds that you allow curl to wait for a 100-continue
+response when curl emits an Expects: 100-continue header in its request. By
+default curl will wait one second. This option accepts decimal values! When
+curl stops waiting, it will continue as if the response has been received.
+
+(Added in 7.47.0)
.IP "--cert-type <type>"
(SSL) Tells curl what certificate type the provided certificate is in. PEM,
DER and ENG are recognized types. If not specified, PEM is assumed.
@@ -544,17 +578,27 @@ 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
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.
+PEM/DER support:
+ 7.39.0: OpenSSL, GnuTLS and GSKit
+ 7.43.0: NSS and wolfSSL/CyaSSL
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+sha256 support:
+ 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+Other SSL backends not supported.
If this option is used several times, the last one will be used.
.IP "--cert-status"
@@ -597,36 +641,37 @@ the symbol <. The difference between @ and < is then that @ makes a file get
attached in the post as a file upload, while the < makes a text field and just
get the contents for that text field from a file.
-Example, to send your password file to the server, where
-\&'password' is the name of the form-field to which /etc/passwd will be the
-input:
+Example: to send an image to a server, where \&'profile' is the name of the
+form-field to which portrait.jpg will be the input:
-\fBcurl\fP -F password=@/etc/passwd www.mypasswords.com
+\fBcurl\fP -F profile=@portrait.jpg https://example.com/upload.cgi
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:
-\fBcurl\fP -F "web=@index.html;type=text/html" url.com
+\fBcurl\fP -F "web=@index.html;type=text/html" example.com
or
-\fBcurl\fP -F "name=daniel;type=text/foo" url.com
+\fBcurl\fP -F "name=daniel;type=text/foo" example.com
You can also explicitly change the name field of a file upload part by setting
filename=, like this:
-\fBcurl\fP -F "file=@localfile;filename=nameinpost" url.com
+\fBcurl\fP -F "file=@localfile;filename=nameinpost" example.com
If filename/path contains ',' or ';', it must be quoted by double-quotes like:
-\fBcurl\fP -F "file=@\\"localfile\\";filename=\\"nameinpost\\"" url.com
+\fBcurl\fP -F "file=@\\"localfile\\";filename=\\"nameinpost\\"" example.com
or
-\fBcurl\fP -F 'file=@"localfile";filename="nameinpost"' url.com
+\fBcurl\fP -F 'file=@"localfile";filename="nameinpost"' example.com
Note that if a filename/path is quoted by double-quotes, any double-quote
or backslash within the filename must be escaped by backslash.
@@ -710,6 +755,10 @@ waits for a reply from the server.
authentication, but non-encrypted data transfers for efficiency. Fails the
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
that can still be used but will be removed in a future version.
+.IP "--ftp-ssl"
+(FTP) This deprecated option is now known as \fI--ssl\fP.
+.IP "--ftp-ssl-reqd"
+(FTP) This deprecated option is now known as \fI--ssl-reqd\fP.
.IP "--form-string <name=string>"
(HTTP) Similar to \fI--form\fP except that the value string for the named
parameter is used literally. Leading \&'@' and \&'<' characters, and the
@@ -757,7 +806,7 @@ intended for a proxy.
Example:
-\&# curl -H "X-First-Name: Joe" http://192.168.0.1/
+\&# curl -H "X-First-Name: Joe" http://example.com/
\fBWARNING\fP: headers set with this option will be set in all requests - even
after redirects are followed, like when told with \fB-L, --location\fP. This
@@ -771,10 +820,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...
@@ -788,7 +839,7 @@ time only.
Perform an operation using a specified interface. You can enter interface
name, IP address or host name. An example could look like:
- curl --interface eth0:1 http://www.netscape.com/
+ curl --interface eth0:1 https://www.example.com/
If this option is used several times, the last one will be used.
.IP "-j, --junk-session-cookies"
@@ -801,8 +852,17 @@ cookies when they're closed down.
server-specified Content-Disposition filename instead of extracting a filename
from the URL.
+If the server specifies a file name and a file with that name already exists
+in the current working directory it will not be overwritten and an error will
+occur. If the server doesn't specify a file name then this option has no
+effect.
+
There's no attempt to decode %-sequences (yet) in the provided file name, so
this option may provide you with rather unexpected file names.
+
+\fBWARNING\fP: Exercise judicious use of this option, especially on Windows. A
+rogue server could send you the name of a DLL or other file that could possibly
+be loaded automatically by Windows or some third party software.
.IP "-k, --insecure"
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
and transfers. All SSL connections are attempted to be made secure by using
@@ -810,7 +870,7 @@ the CA certificate bundle installed by default. This makes all connections
considered "insecure" fail unless \fI-k, --insecure\fP is used.
See this online resource for further details:
-\fBhttp://curl.haxx.se/docs/sslcerts.html\fP
+\fBhttps://curl.haxx.se/docs/sslcerts.html\fP
.IP "-K, --config <config file>"
Specify which config file to read curl arguments from. The config file is a
text file in which command line arguments can be written which then will be
@@ -837,7 +897,7 @@ Note that to be able to specify a URL in the config file, you need to specify
it using the \fI--url\fP option, and not by simply writing the URL on its own
line. So, it could look similar to this:
-url = "http://curl.haxx.se/docs/"
+url = "https://curl.haxx.se/docs/"
When curl is invoked, it always (unless \fI-q\fP is used) checks for a default
config file and uses it if found. The default config file is checked for in
@@ -856,14 +916,14 @@ simply try to load .curlrc from the determined home dir.
.nf
# --- Example file ---
# this is a comment
-url = "curl.haxx.se"
+url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"
# and fetch another URL too
-url = "curl.haxx.se/docs/manpage.html"
+url = "example.com/docs/manpage.html"
-O
-referer = "http://nowhereatall.com/"
+referer = "http://nowhereatall.example.com/"
# --- End of example file ---
.fi
@@ -898,6 +958,8 @@ This option requires a library built with kerberos4 support. This is not
very common. Use \fI-V, --version\fP to see if your curl supports it.
If this option is used several times, the last one will be used.
+.IP "--krb4 <level>"
+(FTP) This is the former name for \fI--krb\fP. Do not use.
.IP "-l, --list-only"
(FTP)
When listing an FTP directory, this switch forces a name-only view. This is
@@ -935,7 +997,7 @@ re-send the following request using the same unmodified method.
You can tell curl to not change the non-GET request method to GET after a 30x
response by using the dedicated options for that: \fI--post301\fP,
-\fI--post302\fP and \fI-post303\fP.
+\fI--post302\fP and \fI--post303\fP.
.IP "--libcurl <file>"
Append this option to any ordinary curl command line, and you will get a
libcurl-using C source code written to the file that does the equivalent
@@ -1011,7 +1073,8 @@ return with exit code 63.
files this option has no effect even if the file transfer ends up being larger
than this given limit. This concerns both FTP and HTTP transfers.
.IP "--mail-rcpt <address>"
-(SMTP) Specify a single address, user name or mailing list name.
+(SMTP) Specify a single address, user name or mailing list name. Repeat this
+option several times to send to multiple recipients.
When performing a mail transfer, the recipient should specify a valid email
address to send the mail to. (Added in 7.20.0)
@@ -1127,6 +1190,19 @@ effectively disables the proxy. Each name in this list is matched as either
a domain which contains the hostname, or the hostname itself. For example,
local.com would match local.com, local.com:80, and www.local.com, but not
www.notlocal.com. (Added in 7.19.4).
+.IP "--connect-to <host:port:connect-to-host:connect-to-port>"
+For a request to the given "host:port" pair, connect to
+"connect-to-host:connect-to-port" instead.
+This is suitable to direct the request at a specific server, e.g. at a specific
+cluster node in a cluster of servers.
+This option is only used to establish the network connection. It does NOT
+affect the hostname/port that is used for TLS/SSL (e.g. SNI, certificate
+verification) or for the application protocols.
+"host" and "port" may be the empty string, meaning "any host/port".
+"connect-to-host" and "connect-to-port" may also be the empty string,
+meaning "use the request's original host/port".
+This option can be used many times to add many connect rules.
+(Added in 7.49.0).
.IP "--ntlm"
(HTTP) Enables NTLM authentication. The NTLM authentication method was
designed by Microsoft and is used by IIS web servers. It is a proprietary
@@ -1142,13 +1218,17 @@ This option requires a library built with SSL support. Use
\fI-V, --version\fP to see if your curl supports NTLM.
If this option is used several times, only the first one is used.
+.IP "--ntlm-wb"
+(HTTP) Enables NTLM much in the style \fI--ntlm\fP does, but hand over the
+authentication to the separate binary ntlmauth application that is executed
+when needed.
.IP "-o, --output <file>"
Write output to <file> instead of stdout. If you are using {} or [] to fetch
multiple documents, you can use '#' followed by a number in the <file>
specifier. That variable will be replaced with the current string for the URL
being fetched. Like in:
- curl http://{one,two}.site.com -o "file_#1.txt"
+ curl http://{one,two}.example.com -o "file_#1.txt"
or use several variables like:
@@ -1163,12 +1243,15 @@ output to be done to stdout.
Write output to a local file named like the remote file we get. (Only the file
part of the remote file is used, the path is cut off.)
-The remote file name to use for saving is extracted from the given URL,
-nothing else.
+The file will be saved in the current working directory. If you want the file
+saved in a different directory, make sure you change the current working
+directory before invoking curl with this option.
-Consequentially, the file will be saved in the current working directory. If
-you want the file saved in a different directory, make sure you change current
-working directory before you invoke curl with the \fB-O, --remote-name\fP flag!
+The remote file name to use for saving is extracted from the given URL, nothing
+else, and if it already exists it will be overwritten. If you want the server
+to be able to choose the file name refer to \fI-J, --remote-header-name\fP
+which can be used in addition to this option. If the server chooses a file name
+and that name already exists it will not be overwritten.
There is no URL decoding done on the file name. If it has %20 or other URL
encoded parts of the name, they will end up as-is as file name.
@@ -1245,21 +1328,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 +1389,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"
@@ -1351,7 +1465,7 @@ If this option is used several times, the last one will be used.
private key file, so passing this option is generally not required. Note that
this public key extraction requires libcurl to be linked against a copy of
libssh2 1.2.8 or higher that is itself linked against OpenSSL.)
-.IP "-q"
+.IP "-q, --disable"
If used as the first parameter on the command line, the \fIcurlrc\fP config
file will not be read and used. See the \fI-K, --config\fP for details on the
default config file search path.
@@ -1423,13 +1537,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
@@ -1474,6 +1585,9 @@ the number used for the specific protocol the host will be used for. It means
you need several entries if you want to provide address for the same host but
different ports.
+The provided address set by this option will be used even if \fI-4, --ipv4\fP
+or \fI-6, --ipv6\fP is set to make curl use another IP version.
+
This option can be used many times to add many host names to resolve.
(Added in 7.21.3)
@@ -1534,14 +1648,17 @@ option name can still be used but will be removed in a future version.
(FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection. Terminates the
connection if the server doesn't support SSL/TLS. (Added in 7.20.0)
-This option was formerly known as \fI--ftp-ssl-reqd\fP (added in 7.15.5). That
-option name can still be used but will be removed in a future version.
+This option was formerly known as \fI--ftp-ssl-reqd\fP.
.IP "--ssl-allow-beast"
(SSL) This option tells curl to not work around a security flaw in the SSL3
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)
@@ -1637,14 +1754,16 @@ specifies what to upload and to where. curl also supports "globbing" of the -T
argument, meaning that you can upload multiple files to a single URL by using
the same URL globbing style supported in the URL, like this:
-curl -T "{file1,file2}" http://www.uploadtothissite.com
+curl -T "{file1,file2}" http://www.example.com
or even
-curl -T "img[1-1000].png" ftp://ftp.picturemania.com/upload/
+curl -T "img[1-1000].png" ftp://ftp.example.com/upload/
.IP "--tcp-nodelay"
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
details about this option. (Added in 7.11.2)
+.IP "--tcp-fastopen"
+Enable use of TCP Fast Open (RFC7413). (Added in 7.49.0)
.IP "--tftp-blksize <value>"
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that
curl will try to use when transferring data to or from a TFTP server. By
@@ -1653,6 +1772,14 @@ default 512 bytes will be used.
If this option is used several times, the last one will be used.
(Added in 7.20.0)
+.IP "--tftp-no-options"
+(TFTP) Tells curl not to send TFTP options requests.
+
+This option improves interop with some legacy servers that do not acknowledge
+or properly implement TFTP options. When this option is used
+\fI--tftp-blksize\fP is ignored.
+
+(Added in 7.48.0)
.IP "--tlsauthtype <authtype>"
Set TLS authentication type. Currently, the only supported option is "SRP",
for TLS-SRP (RFC 5054). If \fI--tlsuser\fP and \fI--tlspassword\fP are
@@ -1751,6 +1878,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"
@@ -1796,7 +1929,7 @@ The Content-Type of the requested document, if there was any.
The ultimate filename that curl writes out to. This is only meaningful if curl
is told to write to a file with the \fI--remote-name\fP or \fI--output\fP
option. It's most useful in combination with the \fI--remote-header-name\fP
-option. (Added in 7.25.1)
+option. (Added in 7.26.0)
.TP
.B ftp_entry_path
The initial path curl ended up in when logging on to the remote FTP
@@ -2270,7 +2403,7 @@ are meant to never change.
Daniel Stenberg is the main author, but the whole list of contributors is
found in the separate THANKS file.
.SH WWW
-http://curl.haxx.se
+https://curl.haxx.se
.SH FTP
ftp://ftp.sunet.se/pub/www/utilities/curl/
.SH "SEE ALSO"
diff --git a/docs/examples/.gitignore b/docs/examples/.gitignore
index d64e12de..aece671c 100644
--- a/docs/examples/.gitignore
+++ b/docs/examples/.gitignore
@@ -73,3 +73,7 @@ smtp-vrfy
url2file
usercertinmem
xmlstream
+http2-download
+http2-serverpush
+http2-upload
+imap-lsub
diff --git a/docs/examples/10-at-a-time.c b/docs/examples/10-at-a-time.c
index 5d95a8a8..aa1862ec 100644
--- a/docs/examples/10-at-a-time.c
+++ b/docs/examples/10-at-a-time.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example application source code using the multi interface to download many
- * files, but with a capped maximum amount of simultaneous transfers.
- *
+/* <DESC>
+ * Source code using the multi interface to download many
+ * files, with a capped maximum amount of simultaneous transfers.
+ * </DESC>
* Written by Michael Wallner
*/
@@ -126,41 +127,42 @@ int main(void)
uses */
curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX);
- for (C = 0; C < MAX; ++C) {
+ for(C = 0; C < MAX; ++C) {
init(cm, C);
}
- while (U) {
+ while(U) {
curl_multi_perform(cm, &U);
- if (U) {
+ if(U) {
FD_ZERO(&R);
FD_ZERO(&W);
FD_ZERO(&E);
- if (curl_multi_fdset(cm, &R, &W, &E, &M)) {
+ if(curl_multi_fdset(cm, &R, &W, &E, &M)) {
fprintf(stderr, "E: curl_multi_fdset\n");
return EXIT_FAILURE;
}
- if (curl_multi_timeout(cm, &L)) {
+ if(curl_multi_timeout(cm, &L)) {
fprintf(stderr, "E: curl_multi_timeout\n");
return EXIT_FAILURE;
}
- if (L == -1)
+ if(L == -1)
L = 100;
- if (M == -1) {
+ if(M == -1) {
#ifdef WIN32
Sleep(L);
#else
- sleep(L / 1000);
+ sleep((unsigned int)L / 1000);
#endif
- } else {
+ }
+ else {
T.tv_sec = L/1000;
T.tv_usec = (L%1000)*1000;
- if (0 > select(M+1, &R, &W, &E, &T)) {
+ if(0 > select(M+1, &R, &W, &E, &T)) {
fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
M+1, L, errno, strerror(errno));
return EXIT_FAILURE;
@@ -168,8 +170,8 @@ int main(void)
}
}
- while ((msg = curl_multi_info_read(cm, &Q))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(cm, &Q))) {
+ if(msg->msg == CURLMSG_DONE) {
char *url;
CURL *e = msg->easy_handle;
curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &url);
@@ -181,7 +183,7 @@ int main(void)
else {
fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
}
- if (C < CNT) {
+ if(C < CNT) {
init(cm, C++);
U++; /* just to prevent it from remaining at 0 if there are more
URLs to get */
diff --git a/docs/examples/Makefile.am b/docs/examples/Makefile.am
index 8e2bc9a8..7a56f345 100644
--- a/docs/examples/Makefile.am
+++ b/docs/examples/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, 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.
+# are also available at https://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
@@ -61,3 +61,6 @@ endif
include Makefile.inc
all: $(check_PROGRAMS)
+
+checksrc:
+ @PERL@ $(top_srcdir)/lib/checksrc.pl $(srcdir)/*.c
diff --git a/docs/examples/Makefile.example b/docs/examples/Makefile.example
index dfd11787..17e614ea 100644
--- a/docs/examples/Makefile.example
+++ b/docs/examples/Makefile.example
@@ -9,7 +9,7 @@
#
# 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.
+# are also available at https://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
diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc
index 4b0c28ff..8ce6f57f 100644
--- a/docs/examples/Makefile.inc
+++ b/docs/examples/Makefile.inc
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, 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.
+# are also available at https://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
@@ -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 getredirect
# These examples require external dependencies that may not be commonly
# available on POSIX systems, so don't bother attempting to compile them here.
diff --git a/docs/examples/Makefile.m32 b/docs/examples/Makefile.m32
index 2da5294e..e75b6d13 100644
--- a/docs/examples/Makefile.m32
+++ b/docs/examples/Makefile.m32
@@ -9,7 +9,7 @@
#
# 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.
+# are also available at https://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
@@ -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
diff --git a/docs/examples/Makefile.netware b/docs/examples/Makefile.netware
index f8e9955e..2d85e736 100644
--- a/docs/examples/Makefile.netware
+++ b/docs/examples/Makefile.netware
@@ -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.
diff --git a/docs/examples/README b/docs/examples/README
index 1ca62a15..078cabed 100644
--- a/docs/examples/README
+++ b/docs/examples/README
@@ -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.
diff --git a/docs/examples/adddocsref.pl b/docs/examples/adddocsref.pl
index 2dcc24b6..efebfe2b 100755
--- a/docs/examples/adddocsref.pl
+++ b/docs/examples/adddocsref.pl
@@ -2,7 +2,7 @@
# pass files as argument(s)
-my $docroot="http://curl.haxx.se/libcurl/c";
+my $docroot="https://curl.haxx.se/libcurl/c";
for $f (@ARGV) {
open(NEW, ">$f.new");
diff --git a/docs/examples/anyauthput.c b/docs/examples/anyauthput.c
index b89dca2e..b1367deb 100644
--- a/docs/examples/anyauthput.c
+++ b/docs/examples/anyauthput.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP PUT upload with authentiction using "any" method. libcurl picks the
+ * one the server supports/wants.
+ * </DESC>
+ */
#include <stdio.h>
#include <fcntl.h>
#ifdef WIN32
@@ -73,7 +78,8 @@
/* ioctl callback function */
static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
{
- intptr_t fd = (intptr_t)userp;
+ int *fdp = (int *)userp;
+ int fd = *fdp;
(void)handle; /* not used in here */
@@ -95,10 +101,11 @@ static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
/* read callback function, fread() look alike */
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
- size_t retcode;
+ ssize_t retcode;
curl_off_t nread;
- intptr_t fd = (intptr_t)stream;
+ int *fdp = (int *)stream;
+ int fd = *fdp;
retcode = read(fd, ptr, size * nmemb);
@@ -114,7 +121,7 @@ int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
- intptr_t hd ;
+ int hd;
struct stat file_info;
char *file;
@@ -127,7 +134,7 @@ int main(int argc, char **argv)
url = argv[2];
/* get the file size of the local file */
- hd = open(file, O_RDONLY) ;
+ hd = open(file, O_RDONLY);
fstat(hd, &file_info);
/* In windows, this will init the winsock stuff */
@@ -140,20 +147,20 @@ int main(int argc, char **argv)
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* which file to upload */
- curl_easy_setopt(curl, CURLOPT_READDATA, (void*)hd);
+ curl_easy_setopt(curl, CURLOPT_READDATA, (void*)&hd);
/* set the ioctl function */
curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
/* pass the file descriptor to the ioctl callback as well */
- curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void*)hd);
+ curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void*)&hd);
/* enable "uploading" (which means PUT when doing HTTP) */
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L) ;
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
/* specify target URL, and note that this URL should also include a file
name, not only a directory (as you can do with GTP uploads) */
- curl_easy_setopt(curl,CURLOPT_URL, url);
+ curl_easy_setopt(curl, CURLOPT_URL, url);
/* and give the size of the upload, this supports large file sizes
on systems that have general support for it */
diff --git a/docs/examples/asiohiper.cpp b/docs/examples/asiohiper.cpp
index eb5cd038..d6065e55 100644
--- a/docs/examples/asiohiper.cpp
+++ b/docs/examples/asiohiper.cpp
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 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.
+ * are also available at https://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
@@ -20,11 +20,11 @@
*
***************************************************************************/
+/* <DESC>
+ * demonstrate the use of multi socket interface with boost::asio
+ * </DESC>
+ */
/*
- * file: asiohiper.cpp
- * Example program to demonstrate the use of multi socket interface
- * with boost::asio
- *
* This program is in c++ and uses boost::asio instead of libevent/libev.
* Requires boost::asio, boost::bind and boost::system
*
@@ -48,6 +48,7 @@
#include <curl/curl.h>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
+#include <iostream>
#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
@@ -378,9 +379,9 @@ static curl_socket_t opensocket(void *clientp, curlsocktype purpose,
}
/* CURLOPT_CLOSESOCKETFUNCTION */
-static int closesocket(void *clientp, curl_socket_t item)
+static int close_socket(void *clientp, curl_socket_t item)
{
- fprintf(MSG_OUT, "\nclosesocket : %d", item);
+ fprintf(MSG_OUT, "\nclose_socket : %d", item);
std::map<curl_socket_t, boost::asio::ip::tcp::socket *>::iterator it = socket_map.find(item);
@@ -427,7 +428,7 @@ static void new_conn(char *url, GlobalInfo *g)
curl_easy_setopt(conn->easy, CURLOPT_OPENSOCKETFUNCTION, opensocket);
/* call this function to close a socket */
- curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, closesocket);
+ curl_easy_setopt(conn->easy, CURLOPT_CLOSESOCKETFUNCTION, close_socket);
fprintf(MSG_OUT,
"\nAdding easy %p to multi %p (%s)", conn->easy, g->multi, url);
@@ -441,7 +442,6 @@ static void new_conn(char *url, GlobalInfo *g)
int main(int argc, char **argv)
{
GlobalInfo g;
- CURLMcode rc;
(void)argc;
(void)argv;
diff --git a/docs/examples/cacertinmem.c b/docs/examples/cacertinmem.c
index 30a5153a..bba8c722 100644
--- a/docs/examples/cacertinmem.c
+++ b/docs/examples/cacertinmem.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,25 +19,19 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example using a "in core" PEM certificate to retrieve a https page.
- * Written by Theo Borm
+/* <DESC>
+ * CA cert in memory with OpenSSL to get a HTTPS page.
+ * </DESC>
*/
-/* on a netBSD system with OPENSSL& LIBCURL installed from
- * pkgsrc (using default paths) this program can be compiled using:
- * gcc -I/usr/pkg/include -L/usr/pkg/lib -lcurl -Wl,-R/usr/pkg/lib -lssl
- * -lcrypto -lz -o curlcacerttest curlcacerttest.c
- * on other operating systems you may want to change paths to headers
- * and libraries
-*/
#include <openssl/ssl.h>
#include <curl/curl.h>
#include <stdio.h>
-size_t writefunction( void *ptr, size_t size, size_t nmemb, void *stream)
+size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
- fwrite(ptr,size,nmemb,stream);
- return(nmemb*size);
+ fwrite(ptr, size, nmemb, stream);
+ return (nmemb*size);
}
static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
@@ -93,14 +87,14 @@ static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
* structure that SSL can use
*/
PEM_read_bio_X509(bio, &cert, 0, NULL);
- if (cert == NULL)
+ if(cert == NULL)
printf("PEM_read_bio_X509 failed...\n");
/* get a pointer to the X509 certificate store (which may be empty!) */
store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
/* add our certificate to this store */
- if (X509_STORE_add_cert(store, cert)==0)
+ if(X509_STORE_add_cert(store, cert)==0)
printf("error adding certificate\n");
/* decrease reference counts */
@@ -108,7 +102,7 @@ static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
BIO_free(bio);
/* all set to go */
- return CURLE_OK ;
+ return CURLE_OK;
}
int main(void)
@@ -118,22 +112,22 @@ int main(void)
rv=curl_global_init(CURL_GLOBAL_ALL);
ch=curl_easy_init();
- rv=curl_easy_setopt(ch,CURLOPT_VERBOSE, 0L);
- rv=curl_easy_setopt(ch,CURLOPT_HEADER, 0L);
- rv=curl_easy_setopt(ch,CURLOPT_NOPROGRESS, 1L);
- rv=curl_easy_setopt(ch,CURLOPT_NOSIGNAL, 1L);
- rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
- rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
- rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
- rv=curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
- rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
- rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
+ rv=curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
+ rv=curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, *writefunction);
+ rv=curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, *writefunction);
+ rv=curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
+ rv=curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
/* first try: retrieve page without cacerts' certificate -> will fail
*/
rv=curl_easy_perform(ch);
- if (rv==CURLE_OK)
+ if(rv==CURLE_OK)
printf("*** transfer succeeded ***\n");
else
printf("*** transfer failed ***\n");
@@ -142,9 +136,9 @@ int main(void)
* load the certificate by installing a function doing the nescessary
* "modifications" to the SSL CONTEXT just before link init
*/
- rv=curl_easy_setopt(ch,CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
rv=curl_easy_perform(ch);
- if (rv==CURLE_OK)
+ if(rv==CURLE_OK)
printf("*** transfer succeeded ***\n");
else
printf("*** transfer failed ***\n");
diff --git a/docs/examples/certinfo.c b/docs/examples/certinfo.c
index ac0109b0..de2e3108 100644
--- a/docs/examples/certinfo.c
+++ b/docs/examples/certinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Extract lots of TLS certificate info.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index 31949b89..de205671 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show transfer timing info after download completes.
+ * </DESC>
+ */
/* Example source code to show how the callback function can be used to
* download data into a chunk of memory instead of storing it in a file.
* After successful download we use curl_easy_getinfo() calls to get the
@@ -64,63 +68,78 @@ int main(int argc, char *argv[])
const char *url = URL_1M;
char *appname = argv[0];
- if (argc > 1) {
+ if(argc > 1) {
/* parse input parameters */
- for (argc--, argv++; *argv; argc--, argv++) {
- if (strncasecmp(*argv, "-", 1) == 0) {
- if (strncasecmp(*argv, "-H", 2) == 0) {
+ for(argc--, argv++; *argv; argc--, argv++) {
+ if(strncasecmp(*argv, "-", 1) == 0) {
+ if(strncasecmp(*argv, "-H", 2) == 0) {
fprintf(stderr,
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
appname);
exit(1);
- } else if (strncasecmp(*argv, "-V", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-V", 2) == 0) {
fprintf(stderr, "\r%s %s - %s\n",
appname, CHKSPEED_VERSION, curl_version());
exit(1);
- } else if (strncasecmp(*argv, "-A", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-A", 2) == 0) {
prtall = 1;
- } else if (strncasecmp(*argv, "-X", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-X", 2) == 0) {
prtsep = 1;
- } else if (strncasecmp(*argv, "-T", 2) == 0) {
+ }
+ else if(strncasecmp(*argv, "-T", 2) == 0) {
prttime = 1;
- } else if (strncasecmp(*argv, "-M=", 3) == 0) {
+ }
+ else if(strncasecmp(*argv, "-M=", 3) == 0) {
long m = strtol((*argv)+3, NULL, 10);
switch(m) {
- case 1: url = URL_1M;
- break;
- case 2: url = URL_2M;
- break;
- case 5: url = URL_5M;
- break;
- case 10: url = URL_10M;
- break;
- case 20: url = URL_20M;
- break;
- case 50: url = URL_50M;
- break;
- case 100: url = URL_100M;
- break;
- default: fprintf(stderr, "\r%s: invalid parameter %s\n",
- appname, *argv + 3);
- exit(1);
+ case 1:
+ url = URL_1M;
+ break;
+ case 2:
+ url = URL_2M;
+ break;
+ case 5:
+ url = URL_5M;
+ break;
+ case 10:
+ url = URL_10M;
+ break;
+ case 20:
+ url = URL_20M;
+ break;
+ case 50:
+ url = URL_50M;
+ break;
+ case 100:
+ url = URL_100M;
+ break;
+ default:
+ fprintf(stderr, "\r%s: invalid parameter %s\n",
+ appname, *argv + 3);
+ exit(1);
}
- } else {
+ }
+ else {
fprintf(stderr, "\r%s: invalid or unknown option %s\n",
appname, *argv);
exit(1);
}
- } else {
+ }
+ else {
url = *argv;
}
}
}
/* print separator line */
- if (prtsep) {
+ if(prtsep) {
printf("-------------------------------------------------\n");
}
/* print localtime */
- if (prttime) {
+ if(prttime) {
time_t t = time(NULL);
printf("Localtime: %s", ctime(&t));
}
@@ -163,7 +182,7 @@ int main(int argc, char *argv[])
if((CURLE_OK == res) && (val>0))
printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024);
- if (prtall) {
+ if(prtall) {
/* check for name resolution time */
res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME, &val);
if((CURLE_OK == res) && (val>0))
@@ -174,8 +193,8 @@ int main(int argc, char *argv[])
if((CURLE_OK == res) && (val>0))
printf("Connect time: %0.3f sec.\n", val);
}
-
- } else {
+ }
+ else {
fprintf(stderr, "Error while fetching '%s' : %s\n",
url, curl_easy_strerror(res));
}
diff --git a/docs/examples/cookie_interface.c b/docs/examples/cookie_interface.c
index 28ee7817..064c7b32 100644
--- a/docs/examples/cookie_interface.c
+++ b/docs/examples/cookie_interface.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This example shows usage of simple cookie interface. */
+/* <DESC>
+ * Import and export cookies with COOKIELIST.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -39,17 +42,18 @@ print_cookies(CURL *curl)
printf("Cookies, curl knows:\n");
res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n",
+ curl_easy_strerror(res));
exit(1);
}
nc = cookies, i = 1;
- while (nc) {
+ while(nc) {
printf("[%d]: %s\n", i, nc->data);
nc = nc->next;
i++;
}
- if (i == 1) {
+ if(i == 1) {
printf("(none)\n");
}
curl_slist_free_all(cookies);
@@ -63,14 +67,14 @@ main(void)
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
- if (curl) {
+ if(curl) {
char nline[256];
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
- curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* just to start the cookie engine */
+ curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* start cookie engine */
res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
+ if(res != CURLE_OK) {
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
return 1;
}
@@ -89,10 +93,13 @@ main(void)
#endif
/* Netscape format cookie */
snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
- ".google.com", "TRUE", "/", "FALSE", (unsigned long)time(NULL) + 31337UL, "PREF", "hello google, i like you very much!");
+ ".google.com", "TRUE", "/", "FALSE",
+ (unsigned long)time(NULL) + 31337UL,
+ "PREF", "hello google, i like you very much!");
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
+ curl_easy_strerror(res));
return 1;
}
@@ -106,18 +113,21 @@ main(void)
"Set-Cookie: OLD_PREF=3d141414bf4209321; "
"expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
- if (res != CURLE_OK) {
- fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
+ if(res != CURLE_OK) {
+ fprintf(stderr, "Curl curl_easy_setopt failed: %s\n",
+ curl_easy_strerror(res));
return 1;
}
print_cookies(curl);
res = curl_easy_perform(curl);
- if (res != CURLE_OK) {
+ if(res != CURLE_OK) {
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
return 1;
}
+
+ curl_easy_cleanup(curl);
}
else {
fprintf(stderr, "Curl init failed!\n");
diff --git a/docs/examples/curlgtk.c b/docs/examples/curlgtk.c
index 8cb9914c..c3129c19 100644
--- a/docs/examples/curlgtk.c
+++ b/docs/examples/curlgtk.c
@@ -5,9 +5,12 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
+ * Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft
+ */
+/* <DESC>
+ * use the libcurl in a gtk-threaded application
+ * </DESC>
*/
-/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
-/* an attempt to use the curl library in concert with a gtk-threaded application */
#include <stdio.h>
#include <gtk/gtk.h>
@@ -47,9 +50,9 @@ void *my_thread(void *ptr)
gchar *url = ptr;
curl = curl_easy_init();
- if(curl)
- {
- outfile = fopen("test.curl", "w");
+ if(curl) {
+ const char *filename = "test.curl";
+ outfile = fopen(filename, "wb");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
@@ -94,7 +97,7 @@ int main(int argc, char **argv)
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
gtk_widget_show_all(Window);
- if (!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
+ if(!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
g_warning("can't create the thread");
diff --git a/docs/examples/curlx.c b/docs/examples/curlx.c
index c68cf0dd..155da237 100644
--- a/docs/examples/curlx.c
+++ b/docs/examples/curlx.c
@@ -9,7 +9,10 @@
certificate presented during ssl session establishment.
*/
-
+/* <DESC>
+ * demonstrates use of SSL context callback, requires OpenSSL
+ * </DESC>
+ */
/*
* Copyright (c) 2003 The OpenEvidence Project. All rights reserved.
@@ -33,7 +36,7 @@
* "This product includes software developed by the Openevidence Project
* for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com)."
@@ -52,7 +55,7 @@
* "This product includes software developed by the OpenEvidence Project
* for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)"
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com)."
@@ -72,7 +75,7 @@
* ====================================================================
*
* This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)
+ * for use in the OpenSSL Toolkit (https://www.openssl.org/)
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
@@ -98,13 +101,18 @@
static const char *curlx_usage[]={
"usage: curlx args\n",
" -p12 arg - tia file ",
- " -envpass arg - environement variable which content the tia private key password",
+ " -envpass arg - environement variable which content the tia private"
+ " key password",
" -out arg - output file (response)- default stdout",
" -in arg - input file (request)- default stdin",
- " -connect arg - URL of the server for the connection ex: www.openevidence.org",
- " -mimetype arg - MIME type for data in ex : application/timestamp-query or application/dvcs -default application/timestamp-query",
- " -acceptmime arg - MIME type acceptable for the response ex : application/timestamp-response or application/dvcs -default none",
- " -accesstype arg - an Object identifier in an AIA/SIA method, e.g. AD_DVCS or ad_timestamping",
+ " -connect arg - URL of the server for the connection ex:"
+ " www.openevidence.org",
+ " -mimetype arg - MIME type for data in ex : application/timestamp-query"
+ " or application/dvcs -default application/timestamp-query",
+ " -acceptmime arg - MIME type acceptable for the response ex : "
+ "application/timestamp-response or application/dvcs -default none",
+ " -accesstype arg - an Object identifier in an AIA/SIA method, e.g."
+ " AD_DVCS or ad_timestamping",
NULL
};
@@ -125,22 +133,22 @@ static const char *curlx_usage[]={
/* This is a context that we pass to all callbacks */
typedef struct sslctxparm_st {
- unsigned char * p12file ;
- const char * pst ;
- PKCS12 * p12 ;
- EVP_PKEY * pkey ;
- X509 * usercert ;
- STACK_OF(X509) * ca ;
+ unsigned char * p12file;
+ const char * pst;
+ PKCS12 * p12;
+ EVP_PKEY * pkey;
+ X509 * usercert;
+ STACK_OF(X509) * ca;
CURL * curl;
BIO * errorbio;
- int accesstype ;
+ int accesstype;
int verbose;
} sslctxparm;
/* some helper function. */
-static char *i2s_ASN1_IA5STRING( ASN1_IA5STRING *ia5)
+static char *ia5string(ASN1_IA5STRING *ia5)
{
char *tmp;
if(!ia5 || !ia5->length)
@@ -152,20 +160,20 @@ static char *i2s_ASN1_IA5STRING( ASN1_IA5STRING *ia5)
}
/* A conveniance routine to get an access URI. */
-
-static unsigned char *my_get_ext(X509 * cert, const int type, int extensiontype) {
-
+static unsigned char *my_get_ext(X509 *cert, const int type,
+ int extensiontype)
+{
int i;
- STACK_OF(ACCESS_DESCRIPTION) * accessinfo ;
- accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL) ;
+ STACK_OF(ACCESS_DESCRIPTION) * accessinfo;
+ accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL);
- if (!sk_ACCESS_DESCRIPTION_num(accessinfo))
+ if(!sk_ACCESS_DESCRIPTION_num(accessinfo))
return NULL;
- for (i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
+ for(i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
- if (OBJ_obj2nid(ad->method) == type) {
- if (ad->location->type == GEN_URI) {
- return i2s_ASN1_IA5STRING(ad->location->d.ia5);
+ if(OBJ_obj2nid(ad->method) == type) {
+ if(ad->location->type == GEN_URI) {
+ return ia5string(ad->location->d.ia5);
}
return NULL;
}
@@ -184,84 +192,86 @@ static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
sslctxparm * p = (sslctxparm *) arg;
int ok;
- if (p->verbose > 2)
- BIO_printf(p->errorbio,"entering ssl_app_verify_callback\n");
+ if(p->verbose > 2)
+ BIO_printf(p->errorbio, "entering ssl_app_verify_callback\n");
- if ((ok= X509_verify_cert(ctx)) && ctx->cert) {
- unsigned char * accessinfo ;
- if (p->verbose > 1)
- X509_print_ex(p->errorbio,ctx->cert,0,0);
+ if((ok= X509_verify_cert(ctx)) && ctx->cert) {
+ unsigned char * accessinfo;
+ if(p->verbose > 1)
+ X509_print_ex(p->errorbio, ctx->cert, 0, 0);
- if (accessinfo = my_get_ext(ctx->cert,p->accesstype ,NID_sinfo_access)) {
- if (p->verbose)
- BIO_printf(p->errorbio,"Setting URL from SIA to: %s\n", accessinfo);
+ if(accessinfo = my_get_ext(ctx->cert, p->accesstype, NID_sinfo_access)) {
+ if(p->verbose)
+ BIO_printf(p->errorbio, "Setting URL from SIA to: %s\n", accessinfo);
- curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
+ curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
}
- else if (accessinfo = my_get_ext(ctx->cert,p->accesstype,
- NID_info_access)) {
- if (p->verbose)
- BIO_printf(p->errorbio,"Setting URL from AIA to: %s\n", accessinfo);
+ else if(accessinfo = my_get_ext(ctx->cert, p->accesstype,
+ NID_info_access)) {
+ if(p->verbose)
+ BIO_printf(p->errorbio, "Setting URL from AIA to: %s\n", accessinfo);
- curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
+ curl_easy_setopt(p->curl, CURLOPT_URL, accessinfo);
}
}
- if (p->verbose > 2)
- BIO_printf(p->errorbio,"leaving ssl_app_verify_callback with %d\n", ok);
- return(ok);
+ if(p->verbose > 2)
+ BIO_printf(p->errorbio, "leaving ssl_app_verify_callback with %d\n", ok);
+
+ return ok;
}
-/* This is an example of an curl SSL initialisation call back. The callback sets:
+/* The SSL initialisation callback. The callback sets:
- a private key and certificate
- a trusted ca certificate
- a preferred cipherlist
- an application verification callback (the function above)
*/
-static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm) {
-
+static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm)
+{
sslctxparm * p = (sslctxparm *) parm;
- SSL_CTX * ctx = (SSL_CTX *) sslctx ;
+ SSL_CTX * ctx = (SSL_CTX *) sslctx;
- if (!SSL_CTX_use_certificate(ctx,p->usercert)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n"); goto err;
+ if(!SSL_CTX_use_certificate(ctx, p->usercert)) {
+ BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n");
+ goto err;
}
- if (!SSL_CTX_use_PrivateKey(ctx,p->pkey)) {
- BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n"); goto err;
+ if(!SSL_CTX_use_PrivateKey(ctx, p->pkey)) {
+ BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n");
+ goto err;
}
- if (!SSL_CTX_check_private_key(ctx)) {
- BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n"); goto err;
+ if(!SSL_CTX_check_private_key(ctx)) {
+ BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n");
+ goto err;
}
- SSL_CTX_set_quiet_shutdown(ctx,1);
- SSL_CTX_set_cipher_list(ctx,"RC4-MD5");
+ SSL_CTX_set_quiet_shutdown(ctx, 1);
+ SSL_CTX_set_cipher_list(ctx, "RC4-MD5");
SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
- X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx), sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
-
- SSL_CTX_set_verify_depth(ctx,2);
-
- SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,ZERO_NULL);
+ X509_STORE_add_cert(SSL_CTX_get_cert_store(ctx),
+ sk_X509_value(p->ca, sk_X509_num(p->ca)-1));
+ SSL_CTX_set_verify_depth(ctx, 2);
+ SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, ZERO_NULL);
SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
-
- return CURLE_OK ;
+ return CURLE_OK;
err:
ERR_print_errors(p->errorbio);
return CURLE_SSL_CERTPROBLEM;
}
-int main(int argc, char **argv) {
-
+int main(int argc, char **argv)
+{
BIO* in=NULL;
BIO* out=NULL;
char * outfile = NULL;
- char * infile = NULL ;
+ char * infile = NULL;
int tabLength=100;
char *binaryptr;
@@ -270,7 +280,7 @@ int main(int argc, char **argv) {
char* contenttype;
const char** pp;
unsigned char* hostporturl = NULL;
- BIO * p12bio ;
+ BIO * p12bio;
char **args = argv + 1;
unsigned char * serverurl;
sslctxparm p;
@@ -293,66 +303,91 @@ int main(int argc, char **argv) {
OpenSSL_add_all_digests();
ERR_load_crypto_strings();
-
-
- while (*args && *args[0] == '-') {
- if (!strcmp (*args, "-in")) {
- if (args[1]) {
+ while(*args && *args[0] == '-') {
+ if(!strcmp (*args, "-in")) {
+ if(args[1]) {
infile=*(++args);
- } else badarg=1;
- } else if (!strcmp (*args, "-out")) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(!strcmp (*args, "-out")) {
+ if(args[1]) {
outfile=*(++args);
- } else badarg=1;
- } else if (!strcmp (*args, "-p12")) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(!strcmp (*args, "-p12")) {
+ if(args[1]) {
p.p12file = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-envpass") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-envpass") == 0) {
+ if(args[1]) {
p.pst = getenv(*(++args));
- } else badarg=1;
- } else if (strcmp(*args,"-connect") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-connect") == 0) {
+ if(args[1]) {
hostporturl = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-mimetype") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-mimetype") == 0) {
+ if(args[1]) {
mimetype = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-acceptmime") == 0) {
- if (args[1]) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-acceptmime") == 0) {
+ if(args[1]) {
mimetypeaccept = *(++args);
- } else badarg=1;
- } else if (strcmp(*args,"-accesstype") == 0) {
- if (args[1]) {
- if ((p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args,0))) == 0) badarg=1;
- } else badarg=1;
- } else if (strcmp(*args,"-verbose") == 0) {
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-accesstype") == 0) {
+ if(args[1]) {
+ if((p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args, 0))) == 0)
+ badarg=1;
+ }
+ else
+ badarg=1;
+ }
+ else if(strcmp(*args, "-verbose") == 0) {
p.verbose++;
- } else badarg=1;
+ }
+ else
+ badarg=1;
args++;
}
- if (mimetype==NULL || mimetypeaccept == NULL) badarg = 1;
+ if(mimetype==NULL || mimetypeaccept == NULL)
+ badarg = 1;
- if (badarg) {
- for (pp=curlx_usage; (*pp != NULL); pp++)
- BIO_printf(p.errorbio,"%s\n",*pp);
- BIO_printf(p.errorbio,"\n");
+ if(badarg) {
+ for(pp=curlx_usage; (*pp != NULL); pp++)
+ BIO_printf(p.errorbio, "%s\n", *pp);
+ BIO_printf(p.errorbio, "\n");
goto err;
}
-
-
/* set input */
- if ((in=BIO_new(BIO_s_file())) == NULL) {
+ if((in=BIO_new(BIO_s_file())) == NULL) {
BIO_printf(p.errorbio, "Error setting input bio\n");
goto err;
- } else if (infile == NULL)
- BIO_set_fp(in,stdin,BIO_NOCLOSE|BIO_FP_TEXT);
- else if (BIO_read_filename(in,infile) <= 0) {
+ }
+ else if(infile == NULL)
+ BIO_set_fp(in, stdin, BIO_NOCLOSE|BIO_FP_TEXT);
+ else if(BIO_read_filename(in, infile) <= 0) {
BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
BIO_free(in);
goto err;
@@ -360,12 +395,13 @@ int main(int argc, char **argv) {
/* set output */
- if ((out=BIO_new(BIO_s_file())) == NULL) {
+ if((out=BIO_new(BIO_s_file())) == NULL) {
BIO_printf(p.errorbio, "Error setting output bio.\n");
goto err;
- } else if (outfile == NULL)
- BIO_set_fp(out,stdout,BIO_NOCLOSE|BIO_FP_TEXT);
- else if (BIO_write_filename(out,outfile) <= 0) {
+ }
+ else if(outfile == NULL)
+ BIO_set_fp(out, stdout, BIO_NOCLOSE|BIO_FP_TEXT);
+ else if(BIO_write_filename(out, outfile) <= 0) {
BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
BIO_free(out);
goto err;
@@ -374,62 +410,66 @@ int main(int argc, char **argv) {
p.errorbio = BIO_new_fp (stderr, BIO_NOCLOSE);
- if (!(p.curl = curl_easy_init())) {
+ if(!(p.curl = curl_easy_init())) {
BIO_printf(p.errorbio, "Cannot init curl lib\n");
goto err;
}
-
-
- if (!(p12bio = BIO_new_file(p.p12file , "rb"))) {
- BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file); goto err;
+ if(!(p12bio = BIO_new_file(p.p12file, "rb"))) {
+ BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file);
+ goto err;
}
- if (!(p.p12 = d2i_PKCS12_bio (p12bio, NULL))) {
- BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file); goto err;
+ if(!(p.p12 = d2i_PKCS12_bio (p12bio, NULL))) {
+ BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file);
+ goto err;
}
p.ca= NULL;
- if (!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
- BIO_printf(p.errorbio,"Invalid P12 structure in %s\n", p.p12file); goto err;
+ if(!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
+ BIO_printf(p.errorbio, "Invalid P12 structure in %s\n", p.p12file);
+ goto err;
}
- if (sk_X509_num(p.ca) <= 0) {
- BIO_printf(p.errorbio,"No trustworthy CA given.%s\n", p.p12file); goto err;
+ if(sk_X509_num(p.ca) <= 0) {
+ BIO_printf(p.errorbio, "No trustworthy CA given.%s\n", p.p12file);
+ goto err;
}
- if (p.verbose > 1)
- X509_print_ex(p.errorbio,p.usercert,0,0);
+ if(p.verbose > 1)
+ X509_print_ex(p.errorbio, p.usercert, 0, 0);
/* determine URL to go */
- if (hostporturl) {
- serverurl = malloc(9+strlen(hostporturl));
- sprintf(serverurl,"https://%s",hostporturl);
+ if(hostporturl) {
+ size_t len = strlen(hostporturl) + 9;
+ serverurl = malloc(len);
+ snprintf(serverurl, len, "https://%s", hostporturl);
}
- else if (p.accesstype != 0) { /* see whether we can find an AIA or SIA for a given access type */
- if (!(serverurl = my_get_ext(p.usercert,p.accesstype,NID_info_access))) {
+ else if(p.accesstype != 0) { /* see whether we can find an AIA or SIA for a
+ given access type */
+ if(!(serverurl = my_get_ext(p.usercert, p.accesstype, NID_info_access))) {
int j=0;
- BIO_printf(p.errorbio,"no service URL in user cert "
+ BIO_printf(p.errorbio, "no service URL in user cert "
"cherching in others certificats\n");
- for (j=0;j<sk_X509_num(p.ca);j++) {
- if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
+ for(j=0; j<sk_X509_num(p.ca); j++) {
+ if((serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
NID_info_access)))
break;
- if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
+ if((serverurl = my_get_ext(sk_X509_value(p.ca, j), p.accesstype,
NID_sinfo_access)))
break;
}
}
}
- if (!serverurl) {
+ if(!serverurl) {
BIO_printf(p.errorbio, "no service URL in certificats,"
" check '-accesstype (AD_DVCS | ad_timestamping)'"
" or use '-connect'\n");
goto err;
}
- if (p.verbose)
+ if(p.verbose)
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
@@ -437,38 +477,39 @@ int main(int argc, char **argv) {
/* Now specify the POST binary data */
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
+ curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
/* pass our list of custom made headers */
contenttype = malloc(15+strlen(mimetype));
- sprintf(contenttype,"Content-type: %s",mimetype);
- headers = curl_slist_append(headers,contenttype);
+ snprintf(contenttype, 15+strlen(mimetype), "Content-type: %s", mimetype);
+ headers = curl_slist_append(headers, contenttype);
curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
- if (p.verbose)
+ if(p.verbose)
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
{
FILE *outfp;
- BIO_get_fp(out,&outfp);
+ BIO_get_fp(out, &outfp);
curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
}
- res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ;
+ res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun);
- if (res != CURLE_OK)
- BIO_printf(p.errorbio,"%d %s=%d %d\n", __LINE__, "CURLOPT_SSL_CTX_FUNCTION",CURLOPT_SSL_CTX_FUNCTION,res);
+ if(res != CURLE_OK)
+ BIO_printf(p.errorbio, "%d %s=%d %d\n", __LINE__,
+ "CURLOPT_SSL_CTX_FUNCTION", CURLOPT_SSL_CTX_FUNCTION, res);
curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
{
int lu; int i=0;
- while ((lu = BIO_read (in,&binaryptr[i],tabLength-i)) >0 ) {
+ while((lu = BIO_read (in, &binaryptr[i], tabLength-i)) >0) {
i+=lu;
- if (i== tabLength) {
+ if(i== tabLength) {
tabLength+=100;
- binaryptr=realloc(binaryptr,tabLength); /* should be more careful */
+ binaryptr=realloc(binaryptr, tabLength); /* should be more careful */
}
}
tabLength = i;
@@ -476,23 +517,23 @@ int main(int argc, char **argv) {
/* Now specify the POST binary data */
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
- curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
+ curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE, (long)tabLength);
/* Perform the request, res will get the return code */
- BIO_printf(p.errorbio,"%d %s %d\n", __LINE__, "curl_easy_perform",
+ BIO_printf(p.errorbio, "%d %s %d\n", __LINE__, "curl_easy_perform",
res = curl_easy_perform(p.curl));
{
- int result =curl_easy_getinfo(p.curl,CURLINFO_CONTENT_TYPE,&response);
- if( mimetypeaccept && p.verbose)
- if(!strcmp(mimetypeaccept,response))
- BIO_printf(p.errorbio,"the response has a correct mimetype : %s\n",
+ int result =curl_easy_getinfo(p.curl, CURLINFO_CONTENT_TYPE, &response);
+ if(mimetypeaccept && p.verbose)
+ if(!strcmp(mimetypeaccept, response))
+ BIO_printf(p.errorbio, "the response has a correct mimetype : %s\n",
response);
else
- BIO_printf(p.errorbio,"the response doesn\'t have an acceptable "
+ BIO_printf(p.errorbio, "the response doesn\'t have an acceptable "
"mime type, it is %s instead of %s\n",
- response,mimetypeaccept);
+ response, mimetypeaccept);
}
/*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
@@ -508,6 +549,6 @@ int main(int argc, char **argv) {
BIO_free(out);
return (EXIT_SUCCESS);
- err: BIO_printf(p.errorbio,"error");
+ err: BIO_printf(p.errorbio, "error");
exit(1);
}
diff --git a/docs/examples/debug.c b/docs/examples/debug.c
index 36dd80d7..f5d58bf1 100644
--- a/docs/examples/debug.c
+++ b/docs/examples/debug.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show how CURLOPT_DEBUGFUNCTION can be used.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -58,14 +62,14 @@ void dump(const char *text,
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) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stream, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
diff --git a/docs/examples/evhiperfifo.c b/docs/examples/evhiperfifo.c
index e03801d8..118f152e 100644
--- a/docs/examples/evhiperfifo.c
+++ b/docs/examples/evhiperfifo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket interface together with libev
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
@@ -115,12 +119,12 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
{
DPRINT("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
ev_timer_stop(g->loop, &g->timer_event);
- if (timeout_ms > 0)
- {
+ if(timeout_ms > 0) {
double t = timeout_ms / 1000;
ev_timer_init(&g->timer_event, timer_cb, t, 0.);
ev_timer_start(g->loop, &g->timer_event);
- }else
+ }
+ else
timer_cb(g->loop, &g->timer_event, 0);
return 0;
}
@@ -128,20 +132,32 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code)
{
- if ( CURLM_OK != code )
- {
+ if(CURLM_OK != code) {
const char *s;
- switch ( code )
- {
- case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
- case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
- case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
- case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
- case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
- case CURLM_LAST: s="CURLM_LAST"; break;
- default: s="CURLM_unknown";
+ switch (code) {
+ case CURLM_BAD_HANDLE:
+ s="CURLM_BAD_HANDLE";
+ break;
+ case CURLM_BAD_EASY_HANDLE:
+ s="CURLM_BAD_EASY_HANDLE";
+ break;
+ case CURLM_OUT_OF_MEMORY:
+ s="CURLM_OUT_OF_MEMORY";
+ break;
+ case CURLM_INTERNAL_ERROR:
+ s="CURLM_INTERNAL_ERROR";
+ break;
+ case CURLM_UNKNOWN_OPTION:
+ s="CURLM_UNKNOWN_OPTION";
+ break;
+ case CURLM_LAST:
+ s="CURLM_LAST";
break;
- case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET";
+ default:
+ s="CURLM_unknown";
+ break;
+ case CURLM_BAD_SOCKET:
+ s="CURLM_BAD_SOCKET";
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
/* ignore this error */
return;
@@ -164,8 +180,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -193,8 +209,7 @@ static void event_cb(EV_P_ struct ev_io *w, int revents)
rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
mcode_or_die("event_cb: curl_multi_socket_action", rc);
check_multi_info(g);
- if ( g->still_running <= 0 )
- {
+ if(g->still_running <= 0) {
fprintf(MSG_OUT, "last transfer done, kill timeout\n");
ev_timer_stop(g->loop, &g->timer_event);
}
@@ -208,7 +223,8 @@ static void timer_cb(EV_P_ struct ev_timer *w, int revents)
GlobalInfo *g = (GlobalInfo *)w->data;
CURLMcode rc;
- rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0, &g->still_running);
+ rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0,
+ &g->still_running);
mcode_or_die("timer_cb: curl_multi_socket_action", rc);
check_multi_info(g);
}
@@ -217,9 +233,8 @@ static void timer_cb(EV_P_ struct ev_timer *w, int revents)
static void remsock(SockInfo *f, GlobalInfo *g)
{
printf("%s \n", __PRETTY_FUNCTION__);
- if ( f )
- {
- if ( f->evset )
+ if(f) {
+ if(f->evset)
ev_io_stop(g->loop, &f->ev);
free(f);
}
@@ -237,7 +252,7 @@ static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
f->sockfd = s;
f->action = act;
f->easy = e;
- if ( f->evset )
+ if(f->evset)
ev_io_stop(g->loop, &f->ev);
ev_io_init(&f->ev, event_cb, f->sockfd, kind);
f->ev.data = g;
@@ -269,18 +284,16 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
fprintf(MSG_OUT,
"socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if ( what == CURL_POLL_REMOVE )
- {
+ if(what == CURL_POLL_REMOVE) {
fprintf(MSG_OUT, "\n");
remsock(fdp, g);
- } else
- {
- if ( !fdp )
- {
+ }
+ else {
+ if(!fdp) {
fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
addsock(s, e, what, g);
- } else
- {
+ }
+ else {
fprintf(MSG_OUT,
"Changing action from %s to %s\n",
whatstr[fdp->action], whatstr[what]);
@@ -316,7 +329,7 @@ static int prog_cb (void *p, double dltotal, double dlnow, double ult,
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
@@ -326,8 +339,7 @@ static void new_conn(char *url, GlobalInfo *g )
conn->error[0]='\0';
conn->easy = curl_easy_init();
- if ( !conn->easy )
- {
+ if(!conn->easy) {
fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -362,16 +374,16 @@ static void fifo_cb(EV_P_ struct ev_io *w, int revents)
int n=0;
GlobalInfo *g = (GlobalInfo *)w->data;
- do
- {
+ do {
s[0]='\0';
rv=fscanf(g->input, "%1023s%n", s, &n);
s[n]='\0';
- if ( n && s[0] )
- {
- new_conn(s,g); /* if we read a URL, go get it! */
- } else break;
- } while ( rv != EOF );
+ if(n && s[0]) {
+ new_conn(s, g); /* if we read a URL, go get it! */
+ }
+ else
+ break;
+ } while(rv != EOF);
}
/* Create a named pipe and tell libevent to monitor it */
@@ -382,24 +394,20 @@ static int init_fifo (GlobalInfo *g)
curl_socket_t sockfd;
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if ( lstat (fifo, &st) == 0 )
- {
- if ( (st.st_mode & S_IFMT) == S_IFREG )
- {
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
errno = EEXIST;
perror("lstat");
exit (1);
}
}
unlink(fifo);
- if ( mkfifo (fifo, 0600) == -1 )
- {
+ if(mkfifo (fifo, 0600) == -1) {
perror("mkfifo");
exit (1);
}
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if ( sockfd == -1 )
- {
+ if(sockfd == -1) {
perror("open");
exit (1);
}
@@ -408,7 +416,7 @@ static int init_fifo (GlobalInfo *g)
fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
ev_io_init(&g->fifo_event, fifo_cb, sockfd, EV_READ);
ev_io_start(g->loop, &g->fifo_event);
- return(0);
+ return (0);
}
int main(int argc, char **argv)
diff --git a/docs/examples/externalsocket.c b/docs/examples/externalsocket.c
index 5486d125..9b144b42 100644
--- a/docs/examples/externalsocket.c
+++ b/docs/examples/externalsocket.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,9 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/*
- * This is an example demonstrating how an application can pass in a custom
+/* <DESC>
+ * An example demonstrating how an application can pass in a custom
* socket to libcurl to use. This example also handles the connect itself.
+ * </DESC>
*/
#include <stdio.h>
#include <string.h>
@@ -53,7 +54,7 @@
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
+ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
@@ -91,7 +92,7 @@ int main(void)
WSADATA wsaData;
int initwsa;
- if((initwsa = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0) {
+ if((initwsa = WSAStartup(MAKEWORD(2, 0), &wsaData)) != 0) {
printf("WSAStartup failed: %d\n", initwsa);
return 1;
}
@@ -106,7 +107,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999");
/* Create the socket "manually" */
- if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == CURL_SOCKET_BAD ) {
+ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == CURL_SOCKET_BAD) {
printf("Error creating listening socket.\n");
return 3;
}
@@ -115,10 +116,10 @@ int main(void)
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(PORTNUM);
- if (INADDR_NONE == (servaddr.sin_addr.s_addr = inet_addr(IPADDR)))
+ if(INADDR_NONE == (servaddr.sin_addr.s_addr = inet_addr(IPADDR)))
return 2;
- if(connect(sockfd,(struct sockaddr *) &servaddr, sizeof(servaddr)) ==
+ if(connect(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)) ==
-1) {
close(sockfd);
printf("client error: connect: %s\n", strerror(errno));
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
index 665eca0a..363fae69 100644
--- a/docs/examples/fileupload.c
+++ b/docs/examples/fileupload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Upload to a file:// URL
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
#include <sys/stat.h>
diff --git a/docs/examples/fopen.c b/docs/examples/fopen.c
index 0aad0abf..71be178e 100644
--- a/docs/examples/fopen.c
+++ b/docs/examples/fopen.c
@@ -42,6 +42,10 @@
*
* This example requires libcurl 7.9.7 or later.
*/
+/* <DESC>
+ * implements an fopen() abstraction allowing reading from URLs
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -76,7 +80,7 @@ struct fcurl_data
typedef struct fcurl_data URL_FILE;
/* exported functions */
-URL_FILE *url_fopen(const char *url,const char *operation);
+URL_FILE *url_fopen(const char *url, const char *operation);
int url_fclose(URL_FILE *file);
int url_feof(URL_FILE *file);
size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
@@ -102,9 +106,9 @@ static size_t write_callback(char *buffer,
if(size > rembuff) {
/* not enough space in buffer */
- newbuff=realloc(url->buffer,url->buffer_len + (size - rembuff));
+ newbuff=realloc(url->buffer, url->buffer_len + (size - rembuff));
if(newbuff==NULL) {
- fprintf(stderr,"callback buffer grow failed\n");
+ fprintf(stderr, "callback buffer grow failed\n");
size=rembuff;
}
else {
@@ -161,8 +165,7 @@ static int fill_buffer(URL_FILE *file, size_t want)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
@@ -226,7 +229,7 @@ static int use_buffer(URL_FILE *file, size_t want)
return 0;
}
-URL_FILE *url_fopen(const char *url,const char *operation)
+URL_FILE *url_fopen(const char *url, const char *operation)
{
/* this code could check for URLs or types in the 'url' and
basically use the real fopen() for standard files */
@@ -240,7 +243,7 @@ URL_FILE *url_fopen(const char *url,const char *operation)
memset(file, 0, sizeof(URL_FILE));
- if((file->handle.file=fopen(url,operation)))
+ if((file->handle.file=fopen(url, operation)))
file->type = CFTYPE_FILE; /* marked as URL */
else {
@@ -334,13 +337,13 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
switch(file->type) {
case CFTYPE_FILE:
- want=fread(ptr,size,nmemb,file->handle.file);
+ want=fread(ptr, size, nmemb, file->handle.file);
break;
case CFTYPE_CURL:
want = nmemb * size;
- fill_buffer(file,want);
+ fill_buffer(file, want);
/* check if theres data in the buffer - if not fill_buffer()
* either errored or EOF */
@@ -354,7 +357,7 @@ size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
/* xfer data to caller */
memcpy(ptr, file->buffer, want);
- use_buffer(file,want);
+ use_buffer(file, want);
want = want / size; /* number of items */
break;
@@ -379,7 +382,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
break;
case CFTYPE_CURL:
- fill_buffer(file,want);
+ fill_buffer(file, want);
/* check if theres data in the buffer - if not fill either errored or
* EOF */
@@ -403,7 +406,7 @@ char *url_fgets(char *ptr, size_t size, URL_FILE *file)
memcpy(ptr, file->buffer, want);
ptr[want]=0;/* allways null terminate */
- use_buffer(file,want);
+ use_buffer(file, want);
break;
@@ -443,6 +446,10 @@ void url_rewind(URL_FILE *file)
}
}
+#define FGETSFILE "fgets.test"
+#define FREADFILE "fread.test"
+#define REWINDFILE "rewind.test"
+
/* Small main program to retrive from a url using fgets and fread saving the
* output to two test files (note the fgets method will corrupt binary files if
* they contain 0 chars */
@@ -461,7 +468,7 @@ int main(int argc, char *argv[])
url=argv[1];/* use passed url */
/* copy from url line by line with fgets */
- outf=fopen("fgets.test","w+");
+ outf=fopen(FGETSFILE, "wb+");
if(!outf) {
perror("couldn't open fgets output file\n");
return 1;
@@ -475,8 +482,8 @@ int main(int argc, char *argv[])
}
while(!url_feof(handle)) {
- url_fgets(buffer,sizeof(buffer),handle);
- fwrite(buffer,1,strlen(buffer),outf);
+ url_fgets(buffer, sizeof(buffer), handle);
+ fwrite(buffer, 1, strlen(buffer), outf);
}
url_fclose(handle);
@@ -485,7 +492,7 @@ int main(int argc, char *argv[])
/* Copy from url with fread */
- outf=fopen("fread.test","w+");
+ outf=fopen(FREADFILE, "wb+");
if(!outf) {
perror("couldn't open fread output file\n");
return 1;
@@ -500,7 +507,7 @@ int main(int argc, char *argv[])
do {
nread = url_fread(buffer, 1, sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ fwrite(buffer, 1, nread, outf);
} while(nread);
url_fclose(handle);
@@ -509,7 +516,7 @@ int main(int argc, char *argv[])
/* Test rewind */
- outf=fopen("rewind.test","w+");
+ outf=fopen(REWINDFILE, "wb+");
if(!outf) {
perror("couldn't open fread output file\n");
return 1;
@@ -522,21 +529,19 @@ int main(int argc, char *argv[])
return 2;
}
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
+ fwrite(buffer, 1, nread, outf);
url_rewind(handle);
buffer[0]='\n';
- fwrite(buffer,1,1,outf);
-
- nread = url_fread(buffer, 1,sizeof(buffer), handle);
- fwrite(buffer,1,nread,outf);
+ fwrite(buffer, 1, 1, outf);
+ nread = url_fread(buffer, 1, sizeof(buffer), handle);
+ fwrite(buffer, 1, nread, outf);
url_fclose(handle);
fclose(outf);
-
return 0;/* all done */
}
diff --git a/docs/examples/ftp-wildcard.c b/docs/examples/ftp-wildcard.c
index d175ddfd..f249bc13 100644
--- a/docs/examples/ftp-wildcard.c
+++ b/docs/examples/ftp-wildcard.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * FTP wildcard pattern matching
+ * </DESC>
+ */
#include <curl/curl.h>
#include <stdio.h>
@@ -115,7 +119,7 @@ static long file_is_coming(struct curl_fileinfo *finfo,
return CURL_CHUNK_BGN_FUNC_SKIP;
}
- data->output = fopen(finfo->filename, "w");
+ data->output = fopen(finfo->filename, "wb");
if(!data->output) {
return CURL_CHUNK_BGN_FUNC_FAIL;
}
diff --git a/docs/examples/ftpget.c b/docs/examples/ftpget.c
index 285283f7..9b7dc024 100644
--- a/docs/examples/ftpget.c
+++ b/docs/examples/ftpget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -23,11 +23,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTP server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTP server.
+ * </DESC>
*/
struct FtpFile {
@@ -65,7 +63,7 @@ int main(void)
* You better replace the URL with one that works!
*/
curl_easy_setopt(curl, CURLOPT_URL,
- "ftp://ftp.example.com/pub/www/utilities/curl/curl-7.9.2.tar.gz");
+ "ftp://ftp.example.com/curl/curl-7.9.2.tar.gz");
/* Define our callback to get called when there's data to be written */
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
/* Set a pointer to our struct to pass to the callback */
diff --git a/docs/examples/ftpgetinfo.c b/docs/examples/ftpgetinfo.c
index dfdcf78b..277e52b9 100644
--- a/docs/examples/ftpgetinfo.c
+++ b/docs/examples/ftpgetinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -24,9 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to check a single file's size and mtime
- * from an FTP server.
+/* <DESC>
+ * Checks a single file's size and mtime from an FTP server.
+ * </DESC>
*/
static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
@@ -65,16 +65,18 @@ int main(void)
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
- /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
+ /* https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
if((CURLE_OK == res) && (filetime >= 0)) {
time_t file_time = (time_t)filetime;
printf("filetime %s: %s", filename, ctime(&file_time));
}
- res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &filesize);
+ res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+ &filesize);
if((CURLE_OK == res) && (filesize>0.0))
printf("filesize %s: %0.0f bytes\n", filename, filesize);
- } else {
+ }
+ else {
/* we failed */
fprintf(stderr, "curl told us %d\n", res);
}
diff --git a/docs/examples/ftpgetresp.c b/docs/examples/ftpgetresp.c
index dcb296ad..7dc34407 100644
--- a/docs/examples/ftpgetresp.c
+++ b/docs/examples/ftpgetresp.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -23,13 +23,11 @@
#include <curl/curl.h>
-/*
- * Similar to ftpget.c but this also stores the received response-lines
+/* <DESC>
+ * Similar to ftpget.c but also stores the received response-lines
* in a separate file using our own callback!
- *
- * This functionality was introduced in libcurl 7.9.3.
+ * </DESC>
*/
-
static size_t
write_response(void *ptr, size_t size, size_t nmemb, void *data)
{
@@ -37,6 +35,9 @@ write_response(void *ptr, size_t size, size_t nmemb, void *data)
return fwrite(ptr, size, nmemb, writehere);
}
+#define FTPBODY "ftp-list"
+#define FTPHEADERS "ftp-responses"
+
int main(void)
{
CURL *curl;
@@ -45,10 +46,10 @@ int main(void)
FILE *respfile;
/* local file name to store the file as */
- ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */
+ ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */
/* local file name to store the FTP server's response lines in */
- respfile = fopen("ftp-responses", "wb"); /* b is binary, needed on win32 */
+ respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */
curl = curl_easy_init();
if(curl) {
diff --git a/docs/examples/ftpsget.c b/docs/examples/ftpsget.c
index dae45348..d53f0884 100644
--- a/docs/examples/ftpsget.c
+++ b/docs/examples/ftpsget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -24,11 +24,9 @@
#include <curl/curl.h>
-/*
- * This is an example showing how to get a single file from an FTPS server.
- * It delays the actual destination file creation until the first write
- * callback so that it won't create an empty file in case the remote file
- * doesn't exist or something else fails.
+/* <DESC>
+ * Get a single file from an FTPS server.
+ * </DESC>
*/
struct FtpFile {
diff --git a/docs/examples/ftpupload.c b/docs/examples/ftpupload.c
index e79f8d84..bba0c4d5 100644
--- a/docs/examples/ftpupload.c
+++ b/docs/examples/ftpupload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -33,11 +33,10 @@
#include <unistd.h>
#endif
-/*
- * This example shows an FTP upload, with a rename of the file just after
- * a successful upload.
- *
- * Example based on source code provided by Erick Nuwendam. Thanks!
+/* <DESC>
+ * Performs an FTP upload and renames the file just after a successful
+ * transfer.
+ * </DESC>
*/
#define LOCAL_FILE "/tmp/uploadthis.txt"
@@ -105,7 +104,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
/* specify target */
- curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL);
+ curl_easy_setopt(curl, CURLOPT_URL, REMOTE_URL);
/* pass in that last of FTP commands to run after the transfer */
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
diff --git a/docs/examples/ftpuploadresume.c b/docs/examples/ftpuploadresume.c
index 55b8986c..64156340 100644
--- a/docs/examples/ftpuploadresume.c
+++ b/docs/examples/ftpuploadresume.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,13 +19,9 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Upload to FTP, resuming failed transfers
- *
- * Compile for MinGW like this:
- * gcc -Wall -pedantic -std=c99 ftpuploadwithresume.c -o ftpuploadresume.exe
- * -lcurl -lmsvcr70
- *
- * Written by Philip Bock
+/* <DESC>
+ * Upload to FTP, resuming failed transfers.
+ * </DESC>
*/
#include <stdlib.h>
@@ -40,7 +36,8 @@
/* The MinGW headers are missing a few Win32 function definitions,
you shouldn't need this if you use VC++ */
#if defined(__MINGW32__) && !defined(__MINGW64__)
-int __cdecl _snscanf(const char * input, size_t length, const char * format, ...);
+int __cdecl _snscanf(const char * input, size_t length,
+ const char * format, ...);
#endif
@@ -53,7 +50,7 @@ size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb, void *stream)
/* _snscanf() is Win32 specific */
r = _snscanf(ptr, size * nmemb, "Content-Length: %ld\n", &len);
- if (r) /* Microsoft: we don't read the specs */
+ if(r) /* Microsoft: we don't read the specs */
*((long *) stream) = len;
return size * nmemb;
@@ -71,7 +68,7 @@ size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
FILE *f = stream;
size_t n;
- if (ferror(f))
+ if(ferror(f))
return CURL_READFUNC_ABORT;
n = fread(ptr, size, nmemb, f) * size;
@@ -89,7 +86,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
int c;
f = fopen(localpath, "rb");
- if (f == NULL) {
+ if(!f) {
perror(NULL);
return 0;
}
@@ -98,7 +95,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
- if (timeout)
+ if(timeout)
curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
@@ -109,14 +106,15 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
- curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-"); /* disable passive mode */
+ /* disable passive mode */
+ curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-");
curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
- for (c = 0; (r != CURLE_OK) && (c < tries); c++) {
+ for(c = 0; (r != CURLE_OK) && (c < tries); c++) {
/* are we resuming? */
- if (c) { /* yes */
+ if(c) { /* yes */
/* determine the length of the file already written */
/*
@@ -131,7 +129,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
r = curl_easy_perform(curlhandle);
- if (r != CURLE_OK)
+ if(r != CURLE_OK)
continue;
curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
@@ -150,7 +148,7 @@ int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
fclose(f);
- if (r == CURLE_OK)
+ if(r == CURLE_OK)
return 1;
else {
fprintf(stderr, "%s\n", curl_easy_strerror(r));
@@ -165,7 +163,8 @@ int main(int c, char **argv)
curl_global_init(CURL_GLOBAL_ALL);
curlhandle = curl_easy_init();
- upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file", 0, 3);
+ upload(curlhandle, "ftp://user:pass@example.com/path/file", "C:\\file",
+ 0, 3);
curl_easy_cleanup(curlhandle);
curl_global_cleanup();
diff --git a/docs/examples/getinfo.c b/docs/examples/getinfo.c
index acbe1e1a..5585564c 100644
--- a/docs/examples/getinfo.c
+++ b/docs/examples/getinfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use getinfo to get content-type after completed transfer.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -27,18 +31,14 @@ int main(void)
CURL *curl;
CURLcode res;
- /* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
curl = curl_easy_init();
if(curl) {
- /* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com/");
- /* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
res = curl_easy_perform(curl);
if(CURLE_OK == res) {
char *ct;
/* ask for the content-type */
- /* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
if((CURLE_OK == res) && ct)
@@ -46,7 +46,6 @@ int main(void)
}
/* always cleanup */
- /* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
curl_easy_cleanup(curl);
}
return 0;
diff --git a/docs/examples/getinmemory.c b/docs/examples/getinmemory.c
index a1c21404..fb794783 100644
--- a/docs/examples/getinmemory.c
+++ b/docs/examples/getinmemory.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,8 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Example source code to show how the callback function can be used to
- * download data into a chunk of memory instead of storing it in a file.
+/* <DESC>
+ * Shows how the write callback function can be used to download data into a
+ * chunk of memory instead of storing it in a file.
+ * </DESC>
*/
#include <stdio.h>
@@ -34,7 +36,6 @@ struct MemoryStruct {
size_t size;
};
-
static size_t
WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
@@ -55,7 +56,6 @@ WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
return realsize;
}
-
int main(void)
{
CURL *curl_handle;
diff --git a/docs/examples/getredirect.c b/docs/examples/getredirect.c
new file mode 100644
index 00000000..347b1e9b
--- /dev/null
+++ b/docs/examples/getredirect.c
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2016, 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 https://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>
+ * Show how to extract Location: header and URL to redirect to.
+ * </DESC>
+ */
+#include <stdio.h>
+#include <curl/curl.h>
+
+int main(void)
+{
+ CURL *curl;
+ CURLcode res;
+ char *location;
+ long response_code;
+
+ curl = curl_easy_init();
+ if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* example.com is redirected, figure out the redirection! */
+
+ /* Perform the request, res will get the return code */
+ res = curl_easy_perform(curl);
+ /* Check for errors */
+ if(res != CURLE_OK)
+ fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ curl_easy_strerror(res));
+ else {
+ res = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
+ if((res == CURLE_OK) &&
+ ((response_code / 100) != 3)) {
+ /* a redirect implies a 3xx response code */
+ fprintf(stderr, "Not a redirect.\n");
+ }
+ else {
+ res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &location);
+
+ if((res == CURLE_OK) && location) {
+ /* This is the new absolute URL that you could redirect to, even if
+ * the Location: response header may have been a relative URL. */
+ printf("Redirected to: %s\n", location);
+ }
+ }
+ }
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+ }
+ return 0;
+}
diff --git a/docs/examples/ghiper.c b/docs/examples/ghiper.c
index 7571ffa3..7317a63d 100644
--- a/docs/examples/ghiper.c
+++ b/docs/examples/ghiper.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,38 +19,41 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage together with with glib2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
* download many files at once.
*
* Written by Jeff Pohlmeyer
-Requires glib-2.x and a (POSIX?) system that has mkfifo().
+ Requires glib-2.x and a (POSIX?) system that has mkfifo().
-This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
-sample programs, adapted to use glib's g_io_channel in place of libevent.
+ This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
+ sample programs, adapted to use glib's g_io_channel in place of libevent.
-When running, the program creates the named pipe "hiper.fifo"
+ When running, the program creates the named pipe "hiper.fifo"
-Whenever there is input into the fifo, the program reads the input as a list
-of URL's and creates some new easy handles to fetch each URL via the
-curl_multi "hiper" API.
+ Whenever there is input into the fifo, the program reads the input as a list
+ of URL's and creates some new easy handles to fetch each URL via the
+ curl_multi "hiper" API.
-Thus, you can try a single URL:
- % echo http://www.yahoo.com > hiper.fifo
+ Thus, you can try a single URL:
+ % echo http://www.yahoo.com > hiper.fifo
-Or a whole bunch of them:
- % cat my-url-list > hiper.fifo
+ Or a whole bunch of them:
+ % cat my-url-list > hiper.fifo
-The fifo buffer is handled almost instantly, so you can even add more URL's
-while the previous requests are still being downloaded.
+ The fifo buffer is handled almost instantly, so you can even add more URL's
+ while the previous requests are still being downloaded.
-This is purely a demo app, all retrieved data is simply discarded by the write
-callback.
+ This is purely a demo app, all retrieved data is simply discarded by the write
+ callback.
*/
-
#include <glib.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -60,13 +63,10 @@ callback.
#include <errno.h>
#include <curl/curl.h>
-
#define MSG_OUT g_print /* Change to "g_error" to write to stderr */
#define SHOW_VERBOSE 0 /* Set to non-zero for libcurl messages */
#define SHOW_PROGRESS 0 /* Set to non-zero to enable progress callback */
-
-
/* Global information, common to all connections */
typedef struct _GlobalInfo {
CURLM *multi;
@@ -74,8 +74,6 @@ typedef struct _GlobalInfo {
int still_running;
} GlobalInfo;
-
-
/* Information associated with a specific easy handle */
typedef struct _ConnInfo {
CURL *easy;
@@ -84,7 +82,6 @@ typedef struct _ConnInfo {
char error[CURL_ERROR_SIZE];
} ConnInfo;
-
/* Information associated with a specific socket */
typedef struct _SockInfo {
curl_socket_t sockfd;
@@ -96,30 +93,25 @@ typedef struct _SockInfo {
GlobalInfo *global;
} SockInfo;
-
-
-
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code) {
- if ( CURLM_OK != code ) {
+ if(CURLM_OK != code) {
const char *s;
switch (code) {
- case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
- case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
- case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
- case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
- case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET"; break;
- case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
- case CURLM_LAST: s="CURLM_LAST"; break;
- default: s="CURLM_unknown";
+ case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
+ case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
+ case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
+ case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
+ case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET"; break;
+ case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
+ case CURLM_LAST: s="CURLM_LAST"; break;
+ default: s="CURLM_unknown";
}
MSG_OUT("ERROR: %s returns %s\n", where, s);
exit(code);
}
}
-
-
/* Check for completed transfers, and remove their easy handles */
static void check_multi_info(GlobalInfo *g)
{
@@ -131,8 +123,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
MSG_OUT("REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -146,8 +138,6 @@ static void check_multi_info(GlobalInfo *g)
}
}
-
-
/* Called by glib when our timeout expires */
static gboolean timer_cb(gpointer data)
{
@@ -155,14 +145,12 @@ static gboolean timer_cb(gpointer data)
CURLMcode rc;
rc = curl_multi_socket_action(g->multi,
- CURL_SOCKET_TIMEOUT, 0, &g->still_running);
+ CURL_SOCKET_TIMEOUT, 0, &g->still_running);
mcode_or_die("timer_cb: curl_multi_socket_action", rc);
check_multi_info(g);
return FALSE;
}
-
-
/* Update the event timer after curl_multi library calls */
static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
{
@@ -172,15 +160,12 @@ static int update_timeout_cb(CURLM *multi, long timeout_ms, void *userp)
timeout.tv_usec = (timeout_ms%1000)*1000;
MSG_OUT("*** update_timeout_cb %ld => %ld:%ld ***\n",
- timeout_ms, timeout.tv_sec, timeout.tv_usec);
+ timeout_ms, timeout.tv_sec, timeout.tv_usec);
g->timer_event = g_timeout_add(timeout_ms, timer_cb, g);
return 0;
}
-
-
-
/* Called by glib when we get action on a multi socket */
static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
{
@@ -198,41 +183,43 @@ static gboolean event_cb(GIOChannel *ch, GIOCondition condition, gpointer data)
check_multi_info(g);
if(g->still_running) {
return TRUE;
- } else {
+ }
+ else {
MSG_OUT("last transfer done, kill timeout\n");
- if (g->timer_event) { g_source_remove(g->timer_event); }
+ if(g->timer_event) {
+ g_source_remove(g->timer_event);
+ }
return FALSE;
}
}
-
-
/* Clean up the SockInfo structure */
static void remsock(SockInfo *f)
{
- if (!f) { return; }
- if (f->ev) { g_source_remove(f->ev); }
+ if(!f) {
+ return;
+ }
+ if(f->ev) {
+ g_source_remove(f->ev);
+ }
g_free(f);
}
-
-
/* Assign information to a SockInfo structure */
static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
{
GIOCondition kind =
- (act&CURL_POLL_IN?G_IO_IN:0)|(act&CURL_POLL_OUT?G_IO_OUT:0);
+ (act&CURL_POLL_IN?G_IO_IN:0)|(act&CURL_POLL_OUT?G_IO_OUT:0);
f->sockfd = s;
f->action = act;
f->easy = e;
- if (f->ev) { g_source_remove(f->ev); }
- f->ev=g_io_add_watch(f->ch, kind, event_cb,g);
-
+ if(f->ev) {
+ g_source_remove(f->ev);
+ }
+ f->ev=g_io_add_watch(f->ch, kind, event_cb, g);
}
-
-
/* Initialize a new SockInfo structure */
static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
{
@@ -244,8 +231,6 @@ static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
curl_multi_assign(g->multi, s, fdp);
}
-
-
/* CURLMOPT_SOCKETFUNCTION */
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
{
@@ -254,14 +239,15 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
static const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE" };
MSG_OUT("socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if (what == CURL_POLL_REMOVE) {
+ if(what == CURL_POLL_REMOVE) {
MSG_OUT("\n");
remsock(fdp);
- } else {
- if (!fdp) {
+ }
+ else {
+ if(!fdp) {
MSG_OUT("Adding data: %s%s\n",
- what&CURL_POLL_IN?"READ":"",
- what&CURL_POLL_OUT?"WRITE":"" );
+ what&CURL_POLL_IN?"READ":"",
+ what&CURL_POLL_OUT?"WRITE":"");
addsock(s, e, what, g);
}
else {
@@ -273,8 +259,6 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
return 0;
}
-
-
/* CURLOPT_WRITEFUNCTION */
static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
{
@@ -285,30 +269,25 @@ static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
return realsize;
}
-
-
/* CURLOPT_PROGRESSFUNCTION */
-static int prog_cb (void *p, double dltotal, double dlnow, double ult, double uln)
+static int prog_cb (void *p, double dltotal, double dlnow, double ult,
+ double uln)
{
ConnInfo *conn = (ConnInfo *)p;
MSG_OUT("Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
return 0;
}
-
-
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
conn = g_malloc0(sizeof(ConnInfo));
-
conn->error[0]='\0';
-
conn->easy = curl_easy_init();
- if (!conn->easy) {
+ if(!conn->easy) {
MSG_OUT("curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -336,93 +315,90 @@ static void new_conn(char *url, GlobalInfo *g )
that the necessary socket_action() call will be called by this app */
}
-
/* This gets called by glib whenever data is received from the fifo */
static gboolean fifo_cb (GIOChannel *ch, GIOCondition condition, gpointer data)
{
- #define BUF_SIZE 1024
+#define BUF_SIZE 1024
gsize len, tp;
gchar *buf, *tmp, *all=NULL;
GIOStatus rv;
do {
GError *err=NULL;
- rv = g_io_channel_read_line (ch,&buf,&len,&tp,&err);
- if ( buf ) {
- if (tp) { buf[tp]='\0'; }
- new_conn(buf,(GlobalInfo*)data);
+ rv = g_io_channel_read_line(ch, &buf, &len, &tp, &err);
+ if(buf) {
+ if(tp) {
+ buf[tp]='\0';
+ }
+ new_conn(buf, (GlobalInfo*)data);
g_free(buf);
- } else {
+ }
+ else {
buf = g_malloc(BUF_SIZE+1);
- while (TRUE) {
+ while(TRUE) {
buf[BUF_SIZE]='\0';
- g_io_channel_read_chars(ch,buf,BUF_SIZE,&len,&err);
- if (len) {
+ g_io_channel_read_chars(ch, buf, BUF_SIZE, &len, &err);
+ if(len) {
buf[len]='\0';
- if (all) {
+ if(all) {
tmp=all;
all=g_strdup_printf("%s%s", tmp, buf);
g_free(tmp);
- } else {
+ }
+ else {
all = g_strdup(buf);
}
- } else {
- break;
+ }
+ else {
+ break;
}
}
- if (all) {
- new_conn(all,(GlobalInfo*)data);
+ if(all) {
+ new_conn(all, (GlobalInfo*)data);
g_free(all);
}
g_free(buf);
}
- if ( err ) {
+ if(err) {
g_error("fifo_cb: %s", err->message);
g_free(err);
break;
}
- } while ( (len) && (rv == G_IO_STATUS_NORMAL) );
+ } while((len) && (rv == G_IO_STATUS_NORMAL));
return TRUE;
}
-
-
-
int init_fifo(void)
{
- struct stat st;
- const char *fifo = "hiper.fifo";
- int socket;
-
- if (lstat (fifo, &st) == 0) {
- if ((st.st_mode & S_IFMT) == S_IFREG) {
- errno = EEXIST;
- perror("lstat");
- exit (1);
+ struct stat st;
+ const char *fifo = "hiper.fifo";
+ int socket;
+
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
+ errno = EEXIST;
+ perror("lstat");
+ exit (1);
+ }
}
- }
-
- unlink (fifo);
- if (mkfifo (fifo, 0600) == -1) {
- perror("mkfifo");
- exit (1);
- }
- socket = open (fifo, O_RDWR | O_NONBLOCK, 0);
+ unlink (fifo);
+ if(mkfifo (fifo, 0600) == -1) {
+ perror("mkfifo");
+ exit (1);
+ }
- if (socket == -1) {
- perror("open");
- exit (1);
- }
- MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
+ socket = open (fifo, O_RDWR | O_NONBLOCK, 0);
- return socket;
+ if(socket == -1) {
+ perror("open");
+ exit (1);
+ }
+ MSG_OUT("Now, pipe some URL's into > %s\n", fifo);
+ return socket;
}
-
-
-
int main(int argc, char **argv)
{
GlobalInfo *g;
@@ -434,8 +410,8 @@ int main(int argc, char **argv)
fd=init_fifo();
ch=g_io_channel_unix_new(fd);
- g_io_add_watch(ch,G_IO_IN,fifo_cb,g);
- gmain=g_main_loop_new(NULL,FALSE);
+ g_io_add_watch(ch, G_IO_IN, fifo_cb, g);
+ gmain=g_main_loop_new(NULL, FALSE);
g->multi = curl_multi_init();
curl_multi_setopt(g->multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
curl_multi_setopt(g->multi, CURLMOPT_SOCKETDATA, g);
diff --git a/docs/examples/hiperfifo.c b/docs/examples/hiperfifo.c
index 84035aa2..98bcafe6 100644
--- a/docs/examples/hiperfifo.c
+++ b/docs/examples/hiperfifo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * multi socket API usage with libevent 2
+ * </DESC>
+ */
/* Example application source code using the multi socket interface to
download many files at once.
@@ -122,7 +126,7 @@ static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
/* Die if we get a bad CURLMcode somewhere */
static void mcode_or_die(const char *where, CURLMcode code)
{
- if ( CURLM_OK != code ) {
+ if(CURLM_OK != code) {
const char *s;
switch (code) {
case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
@@ -156,8 +160,8 @@ static void check_multi_info(GlobalInfo *g)
CURLcode res;
fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
- while ((msg = curl_multi_info_read(g->multi, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(g->multi, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
easy = msg->easy_handle;
res = msg->data.result;
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
@@ -187,9 +191,9 @@ static void event_cb(int fd, short kind, void *userp)
mcode_or_die("event_cb: curl_multi_socket_action", rc);
check_multi_info(g);
- if ( g->still_running <= 0 ) {
+ if(g->still_running <= 0) {
fprintf(MSG_OUT, "last transfer done, kill timeout\n");
- if (evtimer_pending(g->timer_event, NULL)) {
+ if(evtimer_pending(g->timer_event, NULL)) {
evtimer_del(g->timer_event);
}
}
@@ -216,8 +220,8 @@ static void timer_cb(int fd, short kind, void *userp)
/* Clean up the SockInfo structure */
static void remsock(SockInfo *f)
{
- if (f) {
- if (f->evset)
+ if(f) {
+ if(f->evset)
event_free(f->ev);
free(f);
}
@@ -234,7 +238,7 @@ static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
f->sockfd = s;
f->action = act;
f->easy = e;
- if (f->evset)
+ if(f->evset)
event_free(f->ev);
f->ev = event_new(g->evbase, f->sockfd, kind, event_cb, g);
f->evset = 1;
@@ -262,12 +266,12 @@ static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
fprintf(MSG_OUT,
"socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
- if (what == CURL_POLL_REMOVE) {
+ if(what == CURL_POLL_REMOVE) {
fprintf(MSG_OUT, "\n");
remsock(fdp);
}
else {
- if (!fdp) {
+ if(!fdp) {
fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
addsock(s, e, what, g);
}
@@ -308,7 +312,7 @@ static int prog_cb (void *p, double dltotal, double dlnow, double ult,
/* Create a new easy handle, and add it to the global curl_multi */
-static void new_conn(char *url, GlobalInfo *g )
+static void new_conn(char *url, GlobalInfo *g)
{
ConnInfo *conn;
CURLMcode rc;
@@ -318,7 +322,7 @@ static void new_conn(char *url, GlobalInfo *g )
conn->error[0]='\0';
conn->easy = curl_easy_init();
- if (!conn->easy) {
+ if(!conn->easy) {
fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
exit(2);
}
@@ -326,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);
@@ -356,10 +360,12 @@ static void fifo_cb(int fd, short event, void *arg)
s[0]='\0';
rv=fscanf(g->input, "%1023s%n", s, &n);
s[n]='\0';
- if ( n && s[0] ) {
- new_conn(s,arg); /* if we read a URL, go get it! */
- } else break;
- } while ( rv != EOF);
+ if(n && s[0]) {
+ new_conn(s, arg); /* if we read a URL, go get it! */
+ }
+ else
+ break;
+ } while(rv != EOF);
}
/* Create a named pipe and tell libevent to monitor it */
@@ -370,20 +376,20 @@ static int init_fifo (GlobalInfo *g)
curl_socket_t sockfd;
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
- if (lstat (fifo, &st) == 0) {
- if ((st.st_mode & S_IFMT) == S_IFREG) {
+ if(lstat (fifo, &st) == 0) {
+ if((st.st_mode & S_IFMT) == S_IFREG) {
errno = EEXIST;
perror("lstat");
exit (1);
}
}
unlink(fifo);
- if (mkfifo (fifo, 0600) == -1) {
+ if(mkfifo (fifo, 0600) == -1) {
perror("mkfifo");
exit (1);
}
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
- if (sockfd == -1) {
+ if(sockfd == -1) {
perror("open");
exit (1);
}
diff --git a/docs/examples/href_extractor.c b/docs/examples/href_extractor.c
index c11325d2..16f50c0e 100644
--- a/docs/examples/href_extractor.c
+++ b/docs/examples/href_extractor.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2012 - 2016, 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.
+ * are also available at https://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
@@ -20,13 +20,13 @@
*
***************************************************************************/
+/* <DESC>
+ * Uses the "Streaming HTML parser" to extract the href pieces in a streaming
+ * manner from a downloaded HTML.
+ * </DESC>
+ */
/*
- * This example uses the "Streaming HTML parser" to extract the href pieces in
- * a streaming manner from a downloaded HTML. Kindly donated by Michał
- * Kowalczyk.
- *
- * The parser is found at
- * http://code.google.com/p/htmlstreamparser/
+ * The HTML parser is found at http://code.google.com/p/htmlstreamparser/
*/
#include <stdio.h>
@@ -38,11 +38,11 @@ static size_t write_callback(void *buffer, size_t size, size_t nmemb,
void *hsp)
{
size_t realsize = size * nmemb, p;
- for (p = 0; p < realsize; p++) {
+ for(p = 0; p < realsize; p++) {
html_parser_char_parse(hsp, ((char *)buffer)[p]);
- if (html_parser_cmp_tag(hsp, "a", 1))
- if (html_parser_cmp_attr(hsp, "href", 4))
- if (html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
+ if(html_parser_cmp_tag(hsp, "a", 1))
+ if(html_parser_cmp_attr(hsp, "href", 4))
+ if(html_parser_is_in(hsp, HTML_VALUE_ENDED)) {
html_parser_val(hsp)[html_parser_val_length(hsp)] = '\0';
printf("%s\n", html_parser_val(hsp));
}
@@ -56,7 +56,7 @@ int main(int argc, char *argv[])
CURL *curl;
HTMLSTREAMPARSER *hsp;
- if (argc != 2) {
+ if(argc != 2) {
printf("Usage: %s URL\n", argv[0]);
return EXIT_FAILURE;
}
diff --git a/docs/examples/htmltidy.c b/docs/examples/htmltidy.c
index a36e331b..687e3f34 100644
--- a/docs/examples/htmltidy.c
+++ b/docs/examples/htmltidy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,13 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Download a document and use libtidy to parse the HTML.
- * Written by Jeff Pohlmeyer
- *
+/* <DESC>
+ * Download a document and use libtidy to parse the HTML.
+ * </DESC>
+ */
+/*
* LibTidy => http://tidy.sourceforge.net
- *
- * gcc -Wall -I/usr/local/include tidycurl.c -lcurl -ltidy -o tidycurl
- *
*/
#include <stdio.h>
@@ -38,29 +37,27 @@ uint write_cb(char *in, uint size, uint nmemb, TidyBuffer *out)
{
uint r;
r = size * nmemb;
- tidyBufAppend( out, in, r );
- return(r);
+ tidyBufAppend(out, in, r);
+ return r;
}
/* Traverse the document tree */
-void dumpNode(TidyDoc doc, TidyNode tnod, int indent )
+void dumpNode(TidyDoc doc, TidyNode tnod, int indent)
{
TidyNode child;
- for ( child = tidyGetChild(tnod); child; child = tidyGetNext(child) )
- {
- ctmbstr name = tidyNodeGetName( child );
- if ( name )
- {
+ for(child = tidyGetChild(tnod); child; child = tidyGetNext(child) ) {
+ ctmbstr name = tidyNodeGetName(child);
+ if(name) {
/* if it has a name, then it's an HTML tag ... */
TidyAttr attr;
- printf( "%*.*s%s ", indent, indent, "<", name);
+ printf("%*.*s%s ", indent, indent, "<", name);
/* walk the attribute list */
- for ( attr=tidyAttrFirst(child); attr; attr=tidyAttrNext(attr) ) {
+ for(attr=tidyAttrFirst(child); attr; attr=tidyAttrNext(attr) ) {
printf(tidyAttrName(attr));
tidyAttrValue(attr)?printf("=\"%s\" ",
tidyAttrValue(attr)):printf(" ");
}
- printf( ">\n");
+ printf(">\n");
}
else {
/* if it doesn't have a name, then it's probably text, cdata, etc... */
@@ -70,12 +67,12 @@ void dumpNode(TidyDoc doc, TidyNode tnod, int indent )
printf("%*.*s\n", indent, indent, buf.bp?(char *)buf.bp:"");
tidyBufFree(&buf);
}
- dumpNode( doc, child, indent + 4 ); /* recursive */
+ dumpNode(doc, child, indent + 4); /* recursive */
}
}
-int main(int argc, char **argv )
+int main(int argc, char **argv)
{
CURL *curl;
char curl_errbuf[CURL_ERROR_SIZE];
@@ -83,7 +80,7 @@ int main(int argc, char **argv )
TidyBuffer docbuf = {0};
TidyBuffer tidy_errbuf = {0};
int err;
- if ( argc == 2) {
+ if(argc == 2) {
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
@@ -94,19 +91,19 @@ int main(int argc, char **argv )
tdoc = tidyCreate();
tidyOptSetBool(tdoc, TidyForceOutput, yes); /* try harder */
tidyOptSetInt(tdoc, TidyWrapLen, 4096);
- tidySetErrorBuffer( tdoc, &tidy_errbuf );
+ tidySetErrorBuffer(tdoc, &tidy_errbuf);
tidyBufInit(&docbuf);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &docbuf);
err=curl_easy_perform(curl);
- if ( !err ) {
+ if(!err) {
err = tidyParseBuffer(tdoc, &docbuf); /* parse the input */
- if ( err >= 0 ) {
+ if(err >= 0) {
err = tidyCleanAndRepair(tdoc); /* fix any problems */
- if ( err >= 0 ) {
+ if(err >= 0) {
err = tidyRunDiagnostics(tdoc); /* load tidy error buffer */
- if ( err >= 0 ) {
- dumpNode( tdoc, tidyGetRoot(tdoc), 0 ); /* walk the tree */
+ if(err >= 0) {
+ dumpNode(tdoc, tidyGetRoot(tdoc), 0); /* walk the tree */
fprintf(stderr, "%s\n", tidy_errbuf.bp); /* show errors */
}
}
@@ -120,11 +117,11 @@ int main(int argc, char **argv )
tidyBufFree(&docbuf);
tidyBufFree(&tidy_errbuf);
tidyRelease(tdoc);
- return(err);
+ return err;
}
else
- printf( "usage: %s <url>\n", argv[0] );
+ printf("usage: %s <url>\n", argv[0]);
- return(0);
+ return 0;
}
diff --git a/docs/examples/htmltitle.cpp b/docs/examples/htmltitle.cpp
index ab89bb6a..5e6b4a00 100644
--- a/docs/examples/htmltitle.cpp
+++ b/docs/examples/htmltitle.cpp
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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):
@@ -40,7 +42,7 @@
//
#ifdef _MSC_VER
-#define COMPARE(a, b) (!stricmp((a), (b)))
+#define COMPARE(a, b) (!_stricmp((a), (b)))
#else
#define COMPARE(a, b) (!strcasecmp((a), (b)))
#endif
diff --git a/docs/examples/http-post.c b/docs/examples/http-post.c
index f1975b1e..01754527 100644
--- a/docs/examples/http-post.c
+++ b/docs/examples/http-post.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/http2-download.c b/docs/examples/http2-download.c
index 3b7ca81d..9e87a064 100644
--- a/docs/examples/http2-download.c
+++ b/docs/examples/http2-download.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -84,14 +89,14 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
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) {
+ 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) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -144,7 +149,7 @@ static void setup(CURL *hnd, int num)
FILE *out;
char filename[128];
- sprintf(filename, "dl-%d", num);
+ snprintf(filename, 128, "dl-%d", num);
out = fopen(filename, "wb");
@@ -239,8 +244,7 @@ int main(int argc, char **argv)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/http2-serverpush.c b/docs/examples/http2-serverpush.c
new file mode 100644
index 00000000..1a8c69b7
--- /dev/null
+++ b/docs/examples/http2-serverpush.c
@@ -0,0 +1,320 @@
+/***************************************************************************
+ * _ _ ____ _
+ * Project ___| | | | _ \| |
+ * / __| | | | |_) | |
+ * | (__| |_| | _ <| |___
+ * \___|\___/|_| \_\_____|
+ *
+ * Copyright (C) 1998 - 2016, 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 https://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;
+}
+
+#define OUTPUTFILE "dl"
+
+static void setup(CURL *hnd)
+{
+ FILE *out = fopen(OUTPUTFILE, "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 */
+
+ snprintf(filename, 128, "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;
+}
diff --git a/docs/examples/http2-upload.c b/docs/examples/http2-upload.c
index bca16c0d..b6353713 100644
--- a/docs/examples/http2-upload.c
+++ b/docs/examples/http2-upload.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -85,14 +90,14 @@ void dump(const char *text, int num, unsigned char *ptr, size_t size,
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) {
+ 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) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -182,10 +187,10 @@ static void setup(CURL *hnd, int num, const char *upload)
struct stat file_info;
curl_off_t uploadsize;
- sprintf(filename, "dl-%d", num);
+ snprintf(filename, 128, "dl-%d", num);
out = fopen(filename, "wb");
- sprintf(url, "https://localhost:8443/upload-%d", num);
+ snprintf(url, 256, "https://localhost:8443/upload-%d", num);
/* get the file size of the local file */
stat(upload, &file_info);
@@ -303,8 +308,7 @@ int main(int argc, char **argv)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/httpcustomheader.c b/docs/examples/httpcustomheader.c
index 8542ead5..d22b7bc5 100644
--- a/docs/examples/httpcustomheader.c
+++ b/docs/examples/httpcustomheader.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/httpput.c b/docs/examples/httpput.c
index 2e9dc217..4f8aece1 100644
--- a/docs/examples/httpput.c
+++ b/docs/examples/httpput.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -56,7 +60,7 @@ int main(int argc, char **argv)
{
CURL *curl;
CURLcode res;
- FILE * hd_src ;
+ FILE * hd_src;
struct stat file_info;
char *file;
diff --git a/docs/examples/https.c b/docs/examples/https.c
index bd9a33ba..cca83fee 100644
--- a/docs/examples/https.c
+++ b/docs/examples/https.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple HTTPS GET
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/imap-append.c b/docs/examples/imap-append.c
index fa531a8c..3f832897 100644
--- a/docs/examples/imap-append.c
+++ b/docs/examples/imap-append.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -38,7 +44,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: "
+ "<dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
"Subject: IMAP example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
diff --git a/docs/examples/imap-copy.c b/docs/examples/imap-copy.c
index fe2d91c1..4c3b640b 100644
--- a/docs/examples/imap-copy.c
+++ b/docs/examples/imap-copy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-create.c b/docs/examples/imap-create.c
index 65ddede6..8f72cb8f 100644
--- a/docs/examples/imap-create.c
+++ b/docs/examples/imap-create.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-delete.c b/docs/examples/imap-delete.c
index 5113be9a..bd9d1a49 100644
--- a/docs/examples/imap-delete.c
+++ b/docs/examples/imap-delete.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-examine.c b/docs/examples/imap-examine.c
index a7b41c58..4287f8a1 100644
--- a/docs/examples/imap-examine.c
+++ b/docs/examples/imap-examine.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-fetch.c b/docs/examples/imap-fetch.c
index 831d0dcf..192d2e9e 100644
--- a/docs/examples/imap-fetch.c
+++ b/docs/examples/imap-fetch.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -40,7 +46,8 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imap://imap.example.com/INBOX/;UID=1");
/* Perform the fetch */
res = curl_easy_perform(curl);
diff --git a/docs/examples/imap-list.c b/docs/examples/imap-list.c
index 4223052e..291e1e67 100644
--- a/docs/examples/imap-list.c
+++ b/docs/examples/imap-list.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-lsub.c b/docs/examples/imap-lsub.c
index 8960b62b..d130c3d5 100644
--- a/docs/examples/imap-lsub.c
+++ b/docs/examples/imap-lsub.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-multi.c b/docs/examples/imap-multi.c
index c7dc1307..8cd4858c 100644
--- a/docs/examples/imap-multi.c
+++ b/docs/examples/imap-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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
@@ -113,8 +120,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/imap-noop.c b/docs/examples/imap-noop.c
index 71a55728..566890ef 100644
--- a/docs/examples/imap-noop.c
+++ b/docs/examples/imap-noop.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-search.c b/docs/examples/imap-search.c
index 0c1d2673..f1261e1e 100644
--- a/docs/examples/imap-search.c
+++ b/docs/examples/imap-search.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-ssl.c b/docs/examples/imap-ssl.c
index eec9b0e3..69839adb 100644
--- a/docs/examples/imap-ssl.c
+++ b/docs/examples/imap-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example using SSL
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -42,7 +48,8 @@ int main(void)
/* This will fetch message 1 from the user's inbox. Note the use of
* imaps:// rather than imap:// to request a SSL based connection. */
- curl_easy_setopt(curl, CURLOPT_URL, "imaps://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imaps://imap.example.com/INBOX/;UID=1");
/* If you want to connect to a site who isn't using a certificate that is
* signed by one of the certs in the CA bundle you have, you can skip the
diff --git a/docs/examples/imap-store.c b/docs/examples/imap-store.c
index 8f5e7d5b..8479457b 100644
--- a/docs/examples/imap-store.c
+++ b/docs/examples/imap-store.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/imap-tls.c b/docs/examples/imap-tls.c
index c439864b..7daa0bf3 100644
--- a/docs/examples/imap-tls.c
+++ b/docs/examples/imap-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * IMAP example using TLS
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -41,7 +47,8 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_PASSWORD, "secret");
/* This will fetch message 1 from the user's inbox */
- curl_easy_setopt(curl, CURLOPT_URL, "imap://imap.example.com/INBOX/;UID=1");
+ curl_easy_setopt(curl, CURLOPT_URL,
+ "imap://imap.example.com/INBOX/;UID=1");
/* In this example, we'll start with a plain text connection, and upgrade
* to Transport Layer Security (TLS) using the STARTTLS command. Be careful
@@ -55,12 +62,13 @@ int main(void)
* CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ *
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
/* Since the traffic will be encrypted, it is very useful to turn on debug
diff --git a/docs/examples/makefile.dj b/docs/examples/makefile.dj
index c18ef8a7..af761130 100644
--- a/docs/examples/makefile.dj
+++ b/docs/examples/makefile.dj
@@ -9,7 +9,7 @@
#
# 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.
+# are also available at https://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
@@ -19,10 +19,6 @@
# KIND, either express or implied.
#
###########################################################################
-#
-# Adapted for djgpp / Watt-32 / DOS by
-# Gisle Vanem <gvanem@broadpark.no>
-#
TOPDIR = ../..
diff --git a/docs/examples/multi-app.c b/docs/examples/multi-app.c
index b8258975..f8447930 100644
--- a/docs/examples/multi-app.c
+++ b/docs/examples/multi-app.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,7 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is an example application source code using the multi interface. */
+/* <DESC>
+ * A basic application source code using the multi interface doing two
+ * transfers in parallel.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -51,8 +55,8 @@ int main(void)
int msgs_left; /* how many messages are left */
/* Allocate one CURL handle per transfer */
- for (i=0; i<HANDLECOUNT; i++)
- handles[i] = curl_easy_init();
+ for(i=0; i<HANDLECOUNT; i++)
+ handles[i] = curl_easy_init();
/* set the options (I left out a few, you'll get the point anyway) */
curl_easy_setopt(handles[HTTP_HANDLE], CURLOPT_URL, "http://example.com");
@@ -64,8 +68,8 @@ int main(void)
multi_handle = curl_multi_init();
/* add the individual transfers */
- for (i=0; i<HANDLECOUNT; i++)
- curl_multi_add_handle(multi_handle, handles[i]);
+ for(i=0; i<HANDLECOUNT; i++)
+ curl_multi_add_handle(multi_handle, handles[i]);
/* we start some action by calling perform right away */
curl_multi_perform(multi_handle, &still_running);
@@ -102,8 +106,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
@@ -142,12 +145,12 @@ int main(void)
} while(still_running);
/* See how the transfers went */
- while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
- if (msg->msg == CURLMSG_DONE) {
+ while((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
+ if(msg->msg == CURLMSG_DONE) {
int idx, found = 0;
/* Find out which handle this message is about */
- for (idx=0; idx<HANDLECOUNT; idx++) {
+ for(idx=0; idx<HANDLECOUNT; idx++) {
found = (msg->easy_handle == handles[idx]);
if(found)
break;
@@ -167,8 +170,8 @@ int main(void)
curl_multi_cleanup(multi_handle);
/* Free the CURL handles */
- for (i=0; i<HANDLECOUNT; i++)
- curl_easy_cleanup(handles[i]);
+ for(i=0; i<HANDLECOUNT; i++)
+ curl_easy_cleanup(handles[i]);
return 0;
}
diff --git a/docs/examples/multi-debugcallback.c b/docs/examples/multi-debugcallback.c
index 5fb86bea..d07cc3bb 100644
--- a/docs/examples/multi-debugcallback.c
+++ b/docs/examples/multi-debugcallback.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -66,14 +69,14 @@ void dump(const char *text,
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) {
+ if(nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
i+=(c+2-width);
break;
}
fprintf(stream, "%c",
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
/* check again for 0D0A, to avoid an extra \n if it's at width */
- if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
+ if(nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
i+=(c+3-width);
break;
}
@@ -176,8 +179,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-double.c b/docs/examples/multi-double.c
index 0d8d0de4..4e50c768 100644
--- a/docs/examples/multi-double.c
+++ b/docs/examples/multi-double.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -91,8 +95,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-post.c b/docs/examples/multi-post.c
index 5bfdcfd1..5d9abc12 100644
--- a/docs/examples/multi-post.c
+++ b/docs/examples/multi-post.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -112,8 +115,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-single.c b/docs/examples/multi-single.c
index a43a9f52..70b6d24b 100644
--- a/docs/examples/multi-single.c
+++ b/docs/examples/multi-single.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -74,9 +77,8 @@ int main(void)
/* wait for activity, timeout or "nothing" */
mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
- if(mc != CURLM_OK)
- {
- fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/multi-uv.c b/docs/examples/multi-uv.c
index 0c0f8a2b..51526c89 100644
--- a/docs/examples/multi-uv.c
+++ b/docs/examples/multi-uv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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.
@@ -80,9 +84,9 @@ void add_download(const char *url, int num)
FILE *file;
CURL *handle;
- sprintf(filename, "%d.download", num);
+ snprintf(filename, 50, "%d.download", num);
- file = fopen(filename, "w");
+ file = fopen(filename, "wb");
if(!file) {
fprintf(stderr, "Error opening %s\n", filename);
return;
diff --git a/docs/examples/multithread.c b/docs/examples/multithread.c
index 831a0746..475e8fcf 100644
--- a/docs/examples/multithread.c
+++ b/docs/examples/multithread.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
@@ -34,11 +36,11 @@
If you intend to use a SSL-based protocol here you MUST setup the OpenSSL
callback functions as described here:
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
+ https://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
*/
const char * const urls[NUMT]= {
- "http://curl.haxx.se/",
+ "https://curl.haxx.se/",
"ftp://cool.haxx.se/",
"http://www.contactor.se/",
"www.haxx.se"
diff --git a/docs/examples/opensslthreadlock.c b/docs/examples/opensslthreadlock.c
index ad54f08e..eebc42ee 100644
--- a/docs/examples/opensslthreadlock.c
+++ b/docs/examples/opensslthreadlock.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -38,22 +39,22 @@
#define MUTEX_CLEANUP(x) pthread_mutex_destroy(&(x))
#define MUTEX_LOCK(x) pthread_mutex_lock(&(x))
#define MUTEX_UNLOCK(x) pthread_mutex_unlock(&(x))
-#define THREAD_ID pthread_self( )
+#define THREAD_ID pthread_self()
-void handle_error(const char *file, int lineno, const char *msg){
- fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
- ERR_print_errors_fp(stderr);
- /* exit(-1); */
- }
+void handle_error(const char *file, int lineno, const char *msg)
+{
+ fprintf(stderr, "** %s:%d %s\n", file, lineno, msg);
+ ERR_print_errors_fp(stderr);
+ /* exit(-1); */
+}
/* This array will store all of the mutexes available to OpenSSL. */
static MUTEX_TYPE *mutex_buf= NULL;
-
static void locking_function(int mode, int n, const char * file, int line)
{
- if (mode & CRYPTO_LOCK)
+ if(mode & CRYPTO_LOCK)
MUTEX_LOCK(mutex_buf[n]);
else
MUTEX_UNLOCK(mutex_buf[n]);
@@ -68,10 +69,10 @@ int thread_setup(void)
{
int i;
- mutex_buf = malloc(CRYPTO_num_locks( ) * sizeof(MUTEX_TYPE));
- if (!mutex_buf)
+ mutex_buf = malloc(CRYPTO_num_locks() * sizeof(MUTEX_TYPE));
+ if(!mutex_buf)
return 0;
- for (i = 0; i < CRYPTO_num_locks( ); i++)
+ for(i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_SETUP(mutex_buf[i]);
CRYPTO_set_id_callback(id_function);
CRYPTO_set_locking_callback(locking_function);
@@ -82,11 +83,11 @@ int thread_cleanup(void)
{
int i;
- if (!mutex_buf)
+ if(!mutex_buf)
return 0;
CRYPTO_set_id_callback(NULL);
CRYPTO_set_locking_callback(NULL);
- for (i = 0; i < CRYPTO_num_locks( ); i++)
+ for(i = 0; i < CRYPTO_num_locks(); i++)
MUTEX_CLEANUP(mutex_buf[i]);
free(mutex_buf);
mutex_buf = NULL;
diff --git a/docs/examples/persistant.c b/docs/examples/persistant.c
index 0917dfdb..a1e614bd 100644
--- a/docs/examples/persistant.c
+++ b/docs/examples/persistant.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-dele.c b/docs/examples/pop3-dele.c
index fab598f0..14497835 100644
--- a/docs/examples/pop3-dele.c
+++ b/docs/examples/pop3-dele.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-list.c b/docs/examples/pop3-list.c
index aebcea6b..b530a044 100644
--- a/docs/examples/pop3-list.c
+++ b/docs/examples/pop3-list.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-multi.c b/docs/examples/pop3-multi.c
index 6df09a26..f932918e 100644
--- a/docs/examples/pop3-multi.c
+++ b/docs/examples/pop3-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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
@@ -113,8 +120,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/pop3-noop.c b/docs/examples/pop3-noop.c
index 4efe6715..bc162d0c 100644
--- a/docs/examples/pop3-noop.c
+++ b/docs/examples/pop3-noop.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-retr.c b/docs/examples/pop3-retr.c
index b5113fa9..b36ddb55 100644
--- a/docs/examples/pop3-retr.c
+++ b/docs/examples/pop3-retr.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-ssl.c b/docs/examples/pop3-ssl.c
index 0bbec8d9..f0d4e269 100644
--- a/docs/examples/pop3-ssl.c
+++ b/docs/examples/pop3-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example using SSL
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/pop3-stat.c b/docs/examples/pop3-stat.c
index 7b318fc2..46a0a451 100644
--- a/docs/examples/pop3-stat.c
+++ b/docs/examples/pop3-stat.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-tls.c b/docs/examples/pop3-tls.c
index 58278a1e..1a6c447a 100644
--- a/docs/examples/pop3-tls.c
+++ b/docs/examples/pop3-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * POP3 example using TLS
+ * </DESC>
+ */
+
#include <stdio.h>
#include <curl/curl.h>
@@ -55,12 +61,13 @@ int main(void)
* CURLOPT_SSL_VERIFYPEER and CURLOPT_SSL_VERIFYHOST options to 0 (false).
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
+ *
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
/* Since the traffic will be encrypted, it is very useful to turn on debug
diff --git a/docs/examples/pop3-top.c b/docs/examples/pop3-top.c
index 21cee889..f452b412 100644
--- a/docs/examples/pop3-top.c
+++ b/docs/examples/pop3-top.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/pop3-uidl.c b/docs/examples/pop3-uidl.c
index debb1791..f127120e 100644
--- a/docs/examples/pop3-uidl.c
+++ b/docs/examples/pop3-uidl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/post-callback.c b/docs/examples/post-callback.c
index 3e1cfb06..f4cd50c0 100644
--- a/docs/examples/post-callback.c
+++ b/docs/examples/post-callback.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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>
diff --git a/docs/examples/postinmemory.c b/docs/examples/postinmemory.c
index 3afac4b2..9dd4cb63 100644
--- a/docs/examples/postinmemory.c
+++ b/docs/examples/postinmemory.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Make a HTTP POST with data from memory and receive response in memory.
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/docs/examples/postit2.c b/docs/examples/postit2.c
index 88ea78c8..67e685f1 100644
--- a/docs/examples/postit2.c
+++ b/docs/examples/postit2.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * HTTP Multipart formpost with file upload and two additional parts.
+ * </DESC>
+ */
/* Example code that uploads a file name 'foo' to a remote script that accepts
* "HTML form based" (as described in RFC1738) uploads using HTTP POST.
*
@@ -79,7 +83,7 @@ int main(int argc, char *argv[])
if(curl) {
/* what URL that receives this POST */
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/examplepost.cgi");
- if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) )
+ if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
/* only disable 100-continue header if explicitly requested */
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c
index b2635bc8..ab34ef98 100644
--- a/docs/examples/progressfunc.c
+++ b/docs/examples/progressfunc.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use the progress callbacks, old and/or new one depending on available
+ * libcurl version.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/resolve.c b/docs/examples/resolve.c
index 7b3e5656..15e343f9 100644
--- a/docs/examples/resolve.c
+++ b/docs/examples/resolve.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Use CURLOPT_RESOLVE to feed custom IP addresses for given host name + port
+ * number combinations.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/rtsp.c b/docs/examples/rtsp.c
index fed343df..63c46e15 100644
--- a/docs/examples/rtsp.c
+++ b/docs/examples/rtsp.c
@@ -27,6 +27,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
+/* <DESC>
+ * A basic RTSP transfer
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
@@ -42,12 +46,12 @@ static int _getch(void)
{
struct termios oldt, newt;
int ch;
- tcgetattr( STDIN_FILENO, &oldt );
+ tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
- newt.c_lflag &= ~( ICANON | ECHO );
- tcsetattr( STDIN_FILENO, TCSANOW, &newt );
+ newt.c_lflag &= ~( ICANON | ECHO);
+ tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
- tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
+ tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
return ch;
}
#endif
@@ -58,12 +62,12 @@ static int _getch(void)
/* error handling macros */
#define my_curl_easy_setopt(A, B, C) \
- if ((res = curl_easy_setopt((A), (B), (C))) != CURLE_OK) \
+ if((res = curl_easy_setopt((A), (B), (C))) != CURLE_OK) \
fprintf(stderr, "curl_easy_setopt(%s, %s, %s) failed: %d\n", \
#A, #B, #C, res);
#define my_curl_easy_perform(A) \
- if ((res = curl_easy_perform((A))) != CURLE_OK) \
+ if((res = curl_easy_perform((A))) != CURLE_OK) \
fprintf(stderr, "curl_easy_perform(%s) failed: %d\n", #A, res);
@@ -83,9 +87,9 @@ static void rtsp_describe(CURL *curl, const char *uri,
const char *sdp_filename)
{
CURLcode res = CURLE_OK;
- FILE *sdp_fp = fopen(sdp_filename, "wt");
+ FILE *sdp_fp = fopen(sdp_filename, "wb");
printf("\nRTSP: DESCRIBE %s\n", uri);
- if (sdp_fp == NULL) {
+ if(sdp_fp == NULL) {
fprintf(stderr, "Could not open '%s' for writing\n", sdp_filename);
sdp_fp = stdout;
}
@@ -96,7 +100,7 @@ static void rtsp_describe(CURL *curl, const char *uri,
my_curl_easy_setopt(curl, CURLOPT_RTSP_REQUEST, (long)CURL_RTSPREQ_DESCRIBE);
my_curl_easy_perform(curl);
my_curl_easy_setopt(curl, CURLOPT_WRITEDATA, stdout);
- if (sdp_fp != stdout) {
+ if(sdp_fp != stdout) {
fclose(sdp_fp);
}
}
@@ -137,14 +141,15 @@ static void rtsp_teardown(CURL *curl, const char *uri)
/* convert url into an sdp filename */
-static void get_sdp_filename(const char *url, char *sdp_filename)
+static void get_sdp_filename(const char *url, char *sdp_filename,
+ size_t namelen)
{
const char *s = strrchr(url, '/');
strcpy(sdp_filename, "video.sdp");
- if (s != NULL) {
+ if(s != NULL) {
s++;
- if (s[0] != '\0') {
- sprintf(sdp_filename, "%s.sdp", s);
+ if(s[0] != '\0') {
+ snprintf(sdp_filename, namelen, "%s.sdp", s);
}
}
}
@@ -156,10 +161,10 @@ static void get_media_control_attribute(const char *sdp_filename,
{
int max_len = 256;
char *s = malloc(max_len);
- FILE *sdp_fp = fopen(sdp_filename, "rt");
+ FILE *sdp_fp = fopen(sdp_filename, "rb");
control[0] = '\0';
- if (sdp_fp != NULL) {
- while (fgets(s, max_len - 2, sdp_fp) != NULL) {
+ if(sdp_fp != NULL) {
+ while(fgets(s, max_len - 2, sdp_fp) != NULL) {
sscanf(s, " a = control: %s", control);
}
fclose(sdp_fp);
@@ -174,7 +179,8 @@ int main(int argc, char * const argv[])
#if 1
const char *transport = "RTP/AVP;unicast;client_port=1234-1235"; /* UDP */
#else
- const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235"; /* TCP */
+ /* TCP */
+ const char *transport = "RTP/AVP/TCP;unicast;client_port=1234-1235";
#endif
const char *range = "0.000-";
int rc = EXIT_SUCCESS;
@@ -185,50 +191,53 @@ int main(int argc, char * const argv[])
printf(" Requires cURL V7.20 or greater\n\n");
/* check command line */
- if ((argc != 2) && (argc != 3)) {
+ if((argc != 2) && (argc != 3)) {
base_name = strrchr(argv[0], '/');
- if (base_name == NULL) {
+ if(base_name == NULL) {
base_name = strrchr(argv[0], '\\');
}
- if (base_name == NULL) {
+ if(base_name == NULL) {
base_name = argv[0];
- } else {
+ }
+ else {
base_name++;
}
printf("Usage: %s url [transport]\n", base_name);
printf(" url of video server\n");
- printf(" transport (optional) specifier for media stream protocol\n");
+ printf(" transport (optional) specifier for media stream"
+ " protocol\n");
printf(" default transport: %s\n", transport);
printf("Example: %s rtsp://192.168.0.2/media/video1\n\n", base_name);
rc = EXIT_FAILURE;
- } else {
+ }
+ else {
const char *url = argv[1];
char *uri = malloc(strlen(url) + 32);
char *sdp_filename = malloc(strlen(url) + 32);
char *control = malloc(strlen(url) + 32);
CURLcode res;
- get_sdp_filename(url, sdp_filename);
- if (argc == 3) {
+ get_sdp_filename(url, sdp_filename, strlen(url) + 32);
+ if(argc == 3) {
transport = argv[2];
}
/* initialize curl */
res = curl_global_init(CURL_GLOBAL_ALL);
- if (res == CURLE_OK) {
+ if(res == CURLE_OK) {
curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
CURL *curl;
fprintf(stderr, " cURL V%s loaded\n", data->version);
/* initialize this curl session */
curl = curl_easy_init();
- if (curl != NULL) {
+ if(curl != NULL) {
my_curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
my_curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
my_curl_easy_setopt(curl, CURLOPT_HEADERDATA, stdout);
my_curl_easy_setopt(curl, CURLOPT_URL, url);
/* request server options */
- sprintf(uri, "%s", url);
+ snprintf(uri, strlen(url) + 32, "%s", url);
rtsp_options(curl, uri);
/* request session description and write response to sdp file */
@@ -238,11 +247,11 @@ int main(int argc, char * const argv[])
get_media_control_attribute(sdp_filename, control);
/* setup media stream */
- sprintf(uri, "%s/%s", url, control);
+ snprintf(uri, strlen(url) + 32, "%s/%s", url, control);
rtsp_setup(curl, uri, transport);
/* start playing media stream */
- sprintf(uri, "%s/", url);
+ snprintf(uri, strlen(url) + 32, "%s/", url);
rtsp_play(curl, uri, range);
printf("Playing video, press any key to stop ...");
_getch();
@@ -254,11 +263,13 @@ int main(int argc, char * const argv[])
/* cleanup */
curl_easy_cleanup(curl);
curl = NULL;
- } else {
+ }
+ else {
fprintf(stderr, "curl_easy_init() failed\n");
}
curl_global_cleanup();
- } else {
+ }
+ else {
fprintf(stderr, "curl_global_init(%s) failed: %d\n",
"CURL_GLOBAL_ALL", res);
}
diff --git a/docs/examples/sampleconv.c b/docs/examples/sampleconv.c
index 3db31609..eece6aae 100644
--- a/docs/examples/sampleconv.c
+++ b/docs/examples/sampleconv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,10 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * This is a simple example 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.
+ * </DESC>
+ */
/*
- This is a simple example 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.
The IBM-1047 EBCDIC codeset is used for this example but the code
would be similar for other non-ASCII codesets.
@@ -46,10 +49,11 @@ CURLcode my_conv_from_ascii_to_ebcdic(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_a2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
@@ -60,10 +64,11 @@ CURLcode my_conv_from_ebcdic_to_ascii(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_e2a(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
@@ -74,10 +79,11 @@ CURLcode my_conv_from_utf8_to_ebcdic(char *buffer, size_t length)
int rc;
tempptrin = tempptrout = buffer;
rc = platform_u2e(&tempptrin, &bytes, &tempptrout, &bytes);
- if (rc == PLATFORM_CONV_OK) {
- return(CURLE_OK);
- } else {
- return(CURLE_CONV_FAILED);
+ if(rc == PLATFORM_CONV_OK) {
+ return CURLE_OK;
+ }
+ else {
+ return CURLE_CONV_FAILED;
}
}
diff --git a/docs/examples/sendrecv.c b/docs/examples/sendrecv.c
index 88fddf59..41e283cd 100644
--- a/docs/examples/sendrecv.c
+++ b/docs/examples/sendrecv.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,7 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* An example of curl_easy_send() and curl_easy_recv() usage. */
+/* <DESC>
+ * An example of curl_easy_send() and curl_easy_recv() usage.
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
@@ -41,12 +44,10 @@ static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms)
FD_SET(sockfd, &errfd); /* always check for error */
- if(for_recv)
- {
+ if(for_recv) {
FD_SET(sockfd, &infd);
}
- else
- {
+ else {
FD_SET(sockfd, &outfd);
}
@@ -66,6 +67,14 @@ int main(void)
size_t iolen;
curl_off_t nread;
+ /* A general note of caution here: if you're using curl_easy_recv() or
+ curl_easy_send() to implement HTTP or _any_ other protocol libcurl
+ supports "natively", you're doing it wrong and you should stop.
+
+ This example uses HTTP only to show how to use this API, it does not
+ suggest that writing an application doing this is sensible.
+ */
+
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
@@ -73,8 +82,7 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
res = curl_easy_perform(curl);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", strerror(res));
return 1;
}
@@ -85,17 +93,15 @@ int main(void)
*/
res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockextr);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", curl_easy_strerror(res));
return 1;
}
- sockfd = sockextr;
+ sockfd = (curl_socket_t)sockextr;
/* wait for the socket to become ready for sending */
- if(!wait_on_socket(sockfd, 0, 60000L))
- {
+ if(!wait_on_socket(sockfd, 0, 60000L)) {
printf("Error: timeout.\n");
return 1;
}
@@ -105,16 +111,14 @@ int main(void)
* to see if all the request has been sent */
res = curl_easy_send(curl, request, strlen(request), &iolen);
- if(CURLE_OK != res)
- {
+ if(CURLE_OK != res) {
printf("Error: %s\n", curl_easy_strerror(res));
return 1;
}
puts("Reading response.");
/* read the response */
- for(;;)
- {
+ for(;;) {
char buf[1024];
wait_on_socket(sockfd, 1, 60000L);
diff --git a/docs/examples/sepheaders.c b/docs/examples/sepheaders.c
index 7402e354..a865d579 100644
--- a/docs/examples/sepheaders.c
+++ b/docs/examples/sepheaders.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Simple HTTP GET that stores the headers in a separate file
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -27,7 +31,7 @@
static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
- int written = fwrite(ptr, size, nmemb, (FILE *)stream);
+ size_t written = fwrite(ptr, size, nmemb, (FILE *)stream);
return written;
}
diff --git a/docs/examples/sessioninfo.c b/docs/examples/sessioninfo.c
index 2641c713..11c87cd1 100644
--- a/docs/examples/sessioninfo.c
+++ b/docs/examples/sessioninfo.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Uses the CURLINFO_TLS_SESSION data.
+ * </DESC>
+ */
/* Note that this example currently requires cURL to be linked against
GnuTLS (and this program must also be linked against -lgnutls). */
diff --git a/docs/examples/sftpget.c b/docs/examples/sftpget.c
index 434299dc..1ca7448e 100644
--- a/docs/examples/sftpget.c
+++ b/docs/examples/sftpget.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Gets a file using an SFTP URL.
+ * </DESC>
+ */
#include <stdio.h>
diff --git a/docs/examples/simple.c b/docs/examples/simple.c
index 1912ce66..7226f4b9 100644
--- a/docs/examples/simple.c
+++ b/docs/examples/simple.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Very simple HTTP GET
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
diff --git a/docs/examples/simplepost.c b/docs/examples/simplepost.c
index 8657771f..99df057d 100644
--- a/docs/examples/simplepost.c
+++ b/docs/examples/simplepost.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Very simple HTTP POST
+ * </DESC>
+ */
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
diff --git a/docs/examples/simplessl.c b/docs/examples/simplessl.c
index aefb79f6..81713ab8 100644
--- a/docs/examples/simplessl.c
+++ b/docs/examples/simplessl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Shows HTTPS usage with client certs and optional ssl engine use.
+ * </DESC>
+ */
#include <stdio.h>
#include <curl/curl.h>
@@ -43,7 +47,6 @@
int main(void)
{
- int i;
CURL *curl;
CURLcode res;
FILE *headerfile;
@@ -51,6 +54,7 @@ int main(void)
static const char *pCertFile = "testcert.pem";
static const char *pCACertFile="cacert.pem";
+ static const char *pHeaderFile = "dumpit";
const char *pKeyName;
const char *pKeyType;
@@ -67,7 +71,7 @@ int main(void)
pEngine = NULL;
#endif
- headerfile = fopen("dumpit", "w");
+ headerfile = fopen(pHeaderFile, "wb");
curl_global_init(CURL_GLOBAL_DEFAULT);
@@ -77,47 +81,46 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://your.favourite.ssl.site");
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
- for(i = 0; i < 1; i++) /* single-iteration loop, just to break out from */
- {
- if (pEngine) /* use crypto engine */
- {
- if (curl_easy_setopt(curl, CURLOPT_SSLENGINE,pEngine) != CURLE_OK)
- { /* load the crypto engine */
- fprintf(stderr,"can't set crypto engine\n");
+ do { /* dummy loop, just to break out from */
+ if(pEngine) {
+ /* use crypto engine */
+ if(curl_easy_setopt(curl, CURLOPT_SSLENGINE, pEngine) != CURLE_OK) {
+ /* load the crypto engine */
+ fprintf(stderr, "can't set crypto engine\n");
break;
}
- if (curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT,1L) != CURLE_OK)
- { /* set the crypto engine as default */
+ if(curl_easy_setopt(curl, CURLOPT_SSLENGINE_DEFAULT, 1L) != CURLE_OK) {
+ /* set the crypto engine as default */
/* only needed for the first time you load
a engine in a curl object... */
- fprintf(stderr,"can't set crypto engine as default\n");
+ fprintf(stderr, "can't set crypto engine as default\n");
break;
}
}
/* cert is stored PEM coded in file... */
/* since PEM is default, we needn't set it for PEM */
- curl_easy_setopt(curl,CURLOPT_SSLCERTTYPE,"PEM");
+ curl_easy_setopt(curl, CURLOPT_SSLCERTTYPE, "PEM");
/* set the cert for client authentication */
- curl_easy_setopt(curl,CURLOPT_SSLCERT,pCertFile);
+ curl_easy_setopt(curl, CURLOPT_SSLCERT, pCertFile);
/* sorry, for engine we must set the passphrase
(if the key has one...) */
- if (pPassphrase)
- curl_easy_setopt(curl,CURLOPT_KEYPASSWD,pPassphrase);
+ if(pPassphrase)
+ curl_easy_setopt(curl, CURLOPT_KEYPASSWD, pPassphrase);
/* if we use a key stored in a crypto engine,
we must set the key type to "ENG" */
- curl_easy_setopt(curl,CURLOPT_SSLKEYTYPE,pKeyType);
+ curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, pKeyType);
/* set the private key (file or ID in engine) */
- curl_easy_setopt(curl,CURLOPT_SSLKEY,pKeyName);
+ curl_easy_setopt(curl, CURLOPT_SSLKEY, pKeyName);
/* set the file with the certs vaildating the server */
- curl_easy_setopt(curl,CURLOPT_CAINFO,pCACertFile);
+ curl_easy_setopt(curl, CURLOPT_CAINFO, pCACertFile);
/* disconnect if we can't validate server's cert */
- curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
@@ -127,7 +130,7 @@ int main(void)
curl_easy_strerror(res));
/* we are done... */
- }
+ } while(0);
/* always cleanup */
curl_easy_cleanup(curl);
}
diff --git a/docs/examples/smooth-gtk-thread.c b/docs/examples/smooth-gtk-thread.c
index 932f6e39..547cc0f3 100644
--- a/docs/examples/smooth-gtk-thread.c
+++ b/docs/examples/smooth-gtk-thread.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,9 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* This is a multi threaded application that uses a progress bar to show
+/* <DESC>
+ * A multi threaded application that uses a progress bar to show
* status. It uses Gtk+ to make a smooth pulse.
- *
+ * </DESC>
+ */
+/*
* Written by Jud Bishop after studying the other examples provided with
* libcurl.
*
@@ -71,22 +74,19 @@ void *pull_one_url(void *NaN)
/* Stop threads from entering unless j is incremented */
pthread_mutex_lock(&lock);
- while ( j < num_urls )
- {
+ while(j < num_urls) {
printf("j = %d\n", j);
http =
g_strdup_printf("xoap.weather.com/weather/local/%s?cc=*&dayf=5&unit=i\n",
urls[j]);
- printf( "http %s", http );
+ printf("http %s", http);
curl = curl_easy_init();
- if(curl)
- {
+ if(curl) {
- outfile = fopen(urls[j], "w");
- /* printf("fopen\n"); */
+ outfile = fopen(urls[j], "wb");
/* Set the URL and transfer type */
curl_easy_setopt(curl, CURLOPT_URL, http);
@@ -216,7 +216,7 @@ int main(int argc, char **argv)
g_signal_connect(G_OBJECT (top_window), "delete-event",
G_CALLBACK(cb_delete), NULL);
- if (!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
+ if(!g_thread_create(&create_thread, progress_bar, FALSE, NULL) != 0)
g_warning("can't create the thread");
gtk_main();
@@ -225,4 +225,3 @@ int main(int argc, char **argv)
return 0;
}
-
diff --git a/docs/examples/smtp-expn.c b/docs/examples/smtp-expn.c
index 0322d2fc..fb0ed1d1 100644
--- a/docs/examples/smtp-expn.c
+++ b/docs/examples/smtp-expn.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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:
*
diff --git a/docs/examples/smtp-mail.c b/docs/examples/smtp-mail.c
index eea90b8a..315bb2cc 100644
--- a/docs/examples/smtp-mail.c
+++ b/docs/examples/smtp-mail.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -39,7 +45,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -89,11 +96,12 @@ int main(void)
/* This is the URL for your mailserver */
curl_easy_setopt(curl, CURLOPT_URL, "smtp://mail.example.com");
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
@@ -122,13 +130,13 @@ int main(void)
/* Free the list of recipients */
curl_slist_free_all(recipients);
- /* curl won't send the QUIT command until you call cleanup, so you should be
- * able to re-use this connection for additional messages (setting
+ /* curl won't send the QUIT command until you call cleanup, so you should
+ * be able to re-use this connection for additional messages (setting
* CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT as required, and calling
* curl_easy_perform() again. It may not be a good idea to keep the
- * connection open for a very long time though (more than a few minutes may
- * result in the server timing out the connection), and you do want to clean
- * up in the end.
+ * connection open for a very long time though (more than a few minutes
+ * may result in the server timing out the connection), and you do want to
+ * clean up in the end.
*/
curl_easy_cleanup(curl);
}
diff --git a/docs/examples/smtp-multi.c b/docs/examples/smtp-multi.c
index 4098c7d1..89e1d941 100644
--- a/docs/examples/smtp-multi.c
+++ b/docs/examples/smtp-multi.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,12 @@
* KIND, either express or implied.
*
***************************************************************************/
+
+/* <DESC>
+ * SMTP example using the multi interface
+ * </DESC>
+ */
+
#include <string.h>
#include <curl/curl.h>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP multi example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -180,8 +187,7 @@ int main(void)
/* get file descriptors from the transfers */
mc = curl_multi_fdset(mcurl, &fdread, &fdwrite, &fdexcep, &maxfd);
- if(mc != CURLM_OK)
- {
+ if(mc != CURLM_OK) {
fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc);
break;
}
diff --git a/docs/examples/smtp-ssl.c b/docs/examples/smtp-ssl.c
index a774403f..f0123408 100644
--- a/docs/examples/smtp-ssl.c
+++ b/docs/examples/smtp-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP SSL example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -115,11 +122,12 @@ int main(void)
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
#endif
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
diff --git a/docs/examples/smtp-tls.c b/docs/examples/smtp-tls.c
index 4872dbdf..c863e059 100644
--- a/docs/examples/smtp-tls.c
+++ b/docs/examples/smtp-tls.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -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>
@@ -40,7 +46,8 @@ static const char *payload_text[] = {
"To: " TO "\r\n",
"From: " FROM "(Example User)\r\n",
"Cc: " CC "(Another example User)\r\n",
- "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@rfcpedant.example.org>\r\n",
+ "Message-ID: <dcd7cb36-11db-487a-9f3a-e652a9458efd@"
+ "rfcpedant.example.org>\r\n",
"Subject: SMTP TLS example message\r\n",
"\r\n", /* empty line to divide headers from body, see RFC5322 */
"The body of the message starts here.\r\n",
@@ -110,18 +117,19 @@ int main(void)
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
* curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
* That is, in general, a bad idea. It is still better than sending your
- * authentication details in plain text though.
- * Instead, you should get the issuer certificate (or the host certificate
- * if the certificate is self-signed) and add it to the set of certificates
- * that are known to libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See
- * docs/SSLCERTS for more information. */
+ * authentication details in plain text though. Instead, you should get
+ * the issuer certificate (or the host certificate if the certificate is
+ * self-signed) and add it to the set of certificates that are known to
+ * libcurl using CURLOPT_CAINFO and/or CURLOPT_CAPATH. See docs/SSLCERTS
+ * for more information. */
curl_easy_setopt(curl, CURLOPT_CAINFO, "/path/to/certificate.pem");
- /* Note that this option isn't strictly required, omitting it will result in
- * libcurl sending the MAIL FROM command with empty sender data. All
+ /* Note that this option isn't strictly required, omitting it will result
+ * in libcurl sending the MAIL FROM command with empty sender data. All
* autoresponses should have an empty reverse-path, and should be directed
- * to the address in the reverse-path which triggered them. Otherwise, they
- * could cause an endless loop. See RFC 5321 Section 4.5.5 for more details.
+ * to the address in the reverse-path which triggered them. Otherwise,
+ * they could cause an endless loop. See RFC 5321 Section 4.5.5 for more
+ * details.
*/
curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
diff --git a/docs/examples/smtp-vrfy.c b/docs/examples/smtp-vrfy.c
index 4e44cea9..4e0623fb 100644
--- a/docs/examples/smtp-vrfy.c
+++ b/docs/examples/smtp-vrfy.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * 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
- * are also available at http://curl.haxx.se/docs/copyright.html.
+ * are also available at https://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
@@ -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:
diff --git a/docs/examples/synctime.c b/docs/examples/synctime.c
index cd7d0731..1c787bb9 100644
--- a/docs/examples/synctime.c
+++ b/docs/examples/synctime.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Set your system time from a remote HTTP server's Date: header.
+ * </DESC>
+ */
/* This example code only builds as-is on Windows.
*
* While Unix/Linux user, you do not need this software.
@@ -125,7 +129,7 @@ size_t SyncTime_CURL_WriteOutput(void *ptr, size_t size, size_t nmemb,
void *stream)
{
fwrite(ptr, size, nmemb, stream);
- return(nmemb*size);
+ return (nmemb*size);
}
size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
@@ -134,17 +138,17 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
int i, RetVal;
char TmpStr1[26], TmpStr2[26];
- if (ShowAllHeader == 1)
+ if(ShowAllHeader == 1)
fprintf(stderr, "%s", (char *)(ptr));
- if (strncmp((char *)(ptr), "Date:", 5) == 0) {
- if (ShowAllHeader == 0)
+ if(strncmp((char *)(ptr), "Date:", 5) == 0) {
+ if(ShowAllHeader == 0)
fprintf(stderr, "HTTP Server. %s", (char *)(ptr));
- if (AutoSyncTime == 1) {
+ if(AutoSyncTime == 1) {
*TmpStr1 = 0;
*TmpStr2 = 0;
- if (strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
+ if(strlen((char *)(ptr)) > 50) /* Can prevent buffer overflow to
TmpStr1 & 2? */
AutoSyncTime = 0;
else {
@@ -152,11 +156,10 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
TmpStr1, &SYSTime.wDay, TmpStr2, &SYSTime.wYear,
&SYSTime.wHour, &SYSTime.wMinute, &SYSTime.wSecond);
- if (RetVal == 7) {
-
+ if(RetVal == 7) {
SYSTime.wMilliseconds = 500; /* adjust to midpoint, 0.5 sec */
- for (i=0; i<12; i++) {
- if (strcmp(MthStr[i], TmpStr2) == 0) {
+ for(i=0; i<12; i++) {
+ if(strcmp(MthStr[i], TmpStr2) == 0) {
SYSTime.wMonth = i+1;
break;
}
@@ -170,21 +173,21 @@ size_t SyncTime_CURL_WriteHeader(void *ptr, size_t size, size_t nmemb,
}
}
- if (strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
+ if(strncmp((char *)(ptr), "X-Cache: HIT", 12) == 0) {
fprintf(stderr, "ERROR: HTTP Server data is cached."
" Server Date is no longer valid.\n");
AutoSyncTime = 0;
}
- return(nmemb*size);
+ return (nmemb*size);
}
void SyncTime_CURL_Init(CURL *curl, char *proxy_port,
char *proxy_user_password)
{
- if (strlen(proxy_port) > 0)
+ if(strlen(proxy_port) > 0)
curl_easy_setopt(curl, CURLOPT_PROXY, proxy_port);
- if (strlen(proxy_user_password) > 0)
+ if(strlen(proxy_user_password) > 0)
curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, proxy_user_password);
#ifdef SYNCTIME_UA
@@ -201,7 +204,7 @@ int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
CURLcode res;
outfile = NULL;
- if (HttpGetBody == HTTP_COMMAND_HEAD)
+ if(HttpGetBody == HTTP_COMMAND_HEAD)
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
else {
outfile = fopen(OutFileName, "wb");
@@ -210,7 +213,7 @@ int SyncTime_CURL_Fetch(CURL *curl, char *URL_Str, char *OutFileName,
curl_easy_setopt(curl, CURLOPT_URL, URL_Str);
res = curl_easy_perform(curl);
- if (outfile != NULL)
+ if(outfile != NULL)
fclose(outfile);
return res; /* (CURLE_OK) */
}
@@ -240,7 +243,7 @@ int conf_init(conf_t *conf)
int i;
*conf->http_proxy = 0;
- for (i=0; i<MAX_STRING1; i++)
+ for(i=0; i<MAX_STRING1; i++)
conf->proxy_user[i] = 0; /* Clean up password from memory */
*conf->timeserver = 0;
return 1;
@@ -268,24 +271,24 @@ int main(int argc, char *argv[])
RetValue = 0; /* Successful Exit */
conf_init(conf);
- if (argc > 1) {
- while (OptionIndex < argc) {
- if (strncmp(argv[OptionIndex], "--server=", 9) == 0)
+ if(argc > 1) {
+ while(OptionIndex < argc) {
+ if(strncmp(argv[OptionIndex], "--server=", 9) == 0)
snprintf(conf->timeserver, MAX_STRING, "%s", &argv[OptionIndex][9]);
- if (strcmp(argv[OptionIndex], "--showall") == 0)
+ if(strcmp(argv[OptionIndex], "--showall") == 0)
ShowAllHeader = 1;
- if (strcmp(argv[OptionIndex], "--synctime") == 0)
+ if(strcmp(argv[OptionIndex], "--synctime") == 0)
AutoSyncTime = 1;
- if (strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
+ if(strncmp(argv[OptionIndex], "--proxy-user=", 13) == 0)
snprintf(conf->proxy_user, MAX_STRING, "%s", &argv[OptionIndex][13]);
- if (strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
+ if(strncmp(argv[OptionIndex], "--proxy=", 8) == 0)
snprintf(conf->http_proxy, MAX_STRING, "%s", &argv[OptionIndex][8]);
- if ((strcmp(argv[OptionIndex], "--help") == 0) ||
+ if((strcmp(argv[OptionIndex], "--help") == 0) ||
(strcmp(argv[OptionIndex], "/?") == 0)) {
showUsage();
return 0;
@@ -294,13 +297,13 @@ int main(int argc, char *argv[])
}
}
- if (*conf->timeserver == 0) /* Use default server for time information */
+ if(*conf->timeserver == 0) /* Use default server for time information */
snprintf(conf->timeserver, MAX_STRING, "%s", DefaultTimeServer[0]);
/* Init CURL before usage */
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
- if (curl) {
+ if(curl) {
SyncTime_CURL_Init(curl, conf->http_proxy, conf->proxy_user);
/* Calculating time diff between GMT and localtime */
@@ -312,7 +315,7 @@ int main(int argc, char *argv[])
tzonediffFloat = difftime(tt_local, tt_gmt);
tzonediffWord = (int)(tzonediffFloat/3600.0);
- if ((double)(tzonediffWord * 3600) == tzonediffFloat)
+ if((double)(tzonediffWord * 3600) == tzonediffFloat)
snprintf(tzoneBuf, 15, "%+03d'00'", tzonediffWord);
else
snprintf(tzoneBuf, 15, "%+03d'30'", tzonediffWord);
@@ -341,9 +344,9 @@ int main(int argc, char *argv[])
LOCALTime.wMilliseconds);
fprintf(stderr, "\nAfter HTTP. Date: %s%s\n", timeBuf, tzoneBuf);
- if (AutoSyncTime == 3) {
+ if(AutoSyncTime == 3) {
/* Synchronising computer clock */
- if (!SetSystemTime(&SYSTime)) { /* Set system time */
+ if(!SetSystemTime(&SYSTime)) { /* Set system time */
fprintf(stderr, "ERROR: Unable to set system time.\n");
RetValue = 1;
}
diff --git a/docs/examples/threaded-ssl.c b/docs/examples/threaded-ssl.c
index a7e9c2de..5f1d9b92 100644
--- a/docs/examples/threaded-ssl.c
+++ b/docs/examples/threaded-ssl.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,14 +19,19 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Show the required mutex callback setups for GnuTLS and OpenSSL when using
+ * libcurl multi-threaded.
+ * </DESC>
+ */
/* A multi-threaded example that uses pthreads and fetches 4 remote files at
* once over HTTPS. The lock callbacks and stuff assume OpenSSL or GnuTLS
* (libgcrypt) so far.
*
* OpenSSL docs for this:
- * http://www.openssl.org/docs/crypto/threads.html
+ * https://www.openssl.org/docs/crypto/threads.html
* gcrypt docs for this:
- * http://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
+ * https://gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
*/
#define USE_OPENSSL /* or USE_GNUTLS accordingly */
@@ -46,7 +51,7 @@ static void lock_callback(int mode, int type, char *file, int line)
{
(void)file;
(void)line;
- if (mode & CRYPTO_LOCK) {
+ if(mode & CRYPTO_LOCK) {
pthread_mutex_lock(&(lockarray[type]));
}
else {
@@ -59,7 +64,7 @@ static unsigned long thread_id(void)
unsigned long ret;
ret=(unsigned long)pthread_self();
- return(ret);
+ return ret;
}
static void init_locks(void)
@@ -68,8 +73,8 @@ static void init_locks(void)
lockarray=(pthread_mutex_t *)OPENSSL_malloc(CRYPTO_num_locks() *
sizeof(pthread_mutex_t));
- for (i=0; i<CRYPTO_num_locks(); i++) {
- pthread_mutex_init(&(lockarray[i]),NULL);
+ for(i=0; i<CRYPTO_num_locks(); i++) {
+ pthread_mutex_init(&(lockarray[i]), NULL);
}
CRYPTO_set_id_callback((unsigned long (*)())thread_id);
@@ -81,7 +86,7 @@ static void kill_locks(void)
int i;
CRYPTO_set_locking_callback(NULL);
- for (i=0; i<CRYPTO_num_locks(); i++)
+ for(i=0; i<CRYPTO_num_locks(); i++)
pthread_mutex_destroy(&(lockarray[i]));
OPENSSL_free(lockarray);
diff --git a/docs/examples/url2file.c b/docs/examples/url2file.c
index adf696c9..39f84d68 100644
--- a/docs/examples/url2file.c
+++ b/docs/examples/url2file.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,6 +19,10 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
+ * Download a given URL into a local file named page.out.
+ * </DESC>
+ */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -37,7 +41,7 @@ int main(int argc, char *argv[])
static const char *pagefilename = "page.out";
FILE *pagefile;
- if(argc < 2 ) {
+ if(argc < 2) {
printf("Usage: %s <URL>\n", argv[0]);
return 1;
}
@@ -61,7 +65,7 @@ int main(int argc, char *argv[])
/* open the file */
pagefile = fopen(pagefilename, "wb");
- if (pagefile) {
+ if(pagefile) {
/* write the page body to this file handle */
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, pagefile);
diff --git a/docs/examples/usercertinmem.c b/docs/examples/usercertinmem.c
index dd56c616..47573ebb 100644
--- a/docs/examples/usercertinmem.c
+++ b/docs/examples/usercertinmem.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2013 - 2016, 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.
+ * are also available at https://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
@@ -19,10 +19,13 @@
* KIND, either express or implied.
*
***************************************************************************/
+/* <DESC>
/* Example using an in memory PEM user certificate and RSA key to retrieve an
* https page.
- * Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
- * Note that to maintain simplicity this example does not use a CA certificate
+ * </DESC>
+ */
+/* Written by Ishan SinghLevett, based on Theo Borm's cacertinmem.c.
+ * Note that to maintain simplicity this example does not use a CA certificate
* for peer verification. However, some form of peer verification
* must be used in real circumstances when a secure connection is required.
*/
@@ -35,8 +38,8 @@
static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream)
{
- fwrite(ptr,size,nmemb,stream);
- return(nmemb*size);
+ fwrite(ptr, size, nmemb, stream);
+ return (nmemb*size);
}
static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
@@ -117,7 +120,7 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
/* get a BIO */
bio = BIO_new_mem_buf((char *)mypem, -1);
- if (bio == NULL) {
+ if(bio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
@@ -125,49 +128,49 @@ static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
* structure that SSL can use
*/
cert = PEM_read_bio_X509(bio, NULL, 0, NULL);
- if (cert == NULL) {
+ if(cert == NULL) {
printf("PEM_read_bio_X509 failed...\n");
}
/*tell SSL to use the X509 certificate*/
ret = SSL_CTX_use_certificate((SSL_CTX*)sslctx, cert);
- if (ret != 1) {
+ if(ret != 1) {
printf("Use certificate failed\n");
}
/*create a bio for the RSA key*/
kbio = BIO_new_mem_buf((char *)mykey, -1);
- if (kbio == NULL) {
+ if(kbio == NULL) {
printf("BIO_new_mem_buf failed\n");
}
/*read the key bio into an RSA object*/
rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
- if (rsa == NULL) {
+ if(rsa == NULL) {
printf("Failed to create key bio\n");
}
/*tell SSL to use the RSA key from memory*/
ret = SSL_CTX_use_RSAPrivateKey((SSL_CTX*)sslctx, rsa);
- if (ret != 1) {
+ if(ret != 1) {
printf("Use Key failed\n");
}
/* free resources that have been allocated by openssl functions */
- if (bio)
+ if(bio)
BIO_free(bio);
- if (kbio)
+ if(kbio)
BIO_free(kbio);
- if (rsa)
+ if(rsa)
RSA_free(rsa);
- if (cert)
+ if(cert)
X509_free(cert);
/* all set to go */
- return CURLE_OK ;
+ return CURLE_OK;
}
int main(void)
@@ -177,28 +180,28 @@ int main(void)
rv = curl_global_init(CURL_GLOBAL_ALL);
ch = curl_easy_init();
- rv = curl_easy_setopt(ch,CURLOPT_VERBOSE, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_HEADER, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_NOPROGRESS, 1L);
- rv = curl_easy_setopt(ch,CURLOPT_NOSIGNAL, 1L);
- rv = curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
- rv = curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
- rv = curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
- rv = curl_easy_setopt(ch,CURLOPT_HEADERDATA, stderr);
- rv = curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
+ rv = curl_easy_setopt(ch, CURLOPT_VERBOSE, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADER, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_NOPROGRESS, 1L);
+ rv = curl_easy_setopt(ch, CURLOPT_NOSIGNAL, 1L);
+ rv = curl_easy_setopt(ch, CURLOPT_WRITEFUNCTION, writefunction);
+ rv = curl_easy_setopt(ch, CURLOPT_WRITEDATA, stdout);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADERFUNCTION, writefunction);
+ rv = curl_easy_setopt(ch, CURLOPT_HEADERDATA, stderr);
+ rv = curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
/* both VERIFYPEER and VERIFYHOST are set to 0 in this case because there is
no CA certificate*/
- rv = curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER, 0L);
- rv = curl_easy_setopt(ch,CURLOPT_SSL_VERIFYHOST, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 0L);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_VERIFYHOST, 0L);
rv = curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
rv = curl_easy_setopt(ch, CURLOPT_SSLKEYTYPE, "PEM");
/* first try: retrieve page without user certificate and key -> will fail
*/
rv = curl_easy_perform(ch);
- if (rv==CURLE_OK) {
+ if(rv==CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
@@ -209,9 +212,9 @@ int main(void)
* load the certificate and key by installing a function doing the necessary
* "modifications" to the SSL CONTEXT just before link init
*/
- rv = curl_easy_setopt(ch,CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv = curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
rv = curl_easy_perform(ch);
- if (rv==CURLE_OK) {
+ if(rv==CURLE_OK) {
printf("*** transfer succeeded ***\n");
}
else {
diff --git a/docs/examples/version-check.pl b/docs/examples/version-check.pl
index 92f0808d..074e50d8 100755
--- a/docs/examples/version-check.pl
+++ b/docs/examples/version-check.pl
@@ -10,7 +10,7 @@
#
# 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.
+# are also available at https://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
diff --git a/docs/examples/xmlstream.c b/docs/examples/xmlstream.c
index 81934450..8066828f 100644
--- a/docs/examples/xmlstream.c
+++ b/docs/examples/xmlstream.c
@@ -5,11 +5,11 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
- * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2016, 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.
+ * are also available at https://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
@@ -19,8 +19,11 @@
* KIND, either express or implied.
*
***************************************************************************/
-/* Stream-parse a document using the streaming Expat parser.
- * Written by David Strauss
+/* <DESC>
+ * Stream-parse a document using the streaming Expat parser.
+ * </DESC>
+ */
+/* Written by David Strauss
*
* Expat => http://www.libexpat.org/
*
@@ -48,7 +51,8 @@ struct ParserStruct {
struct MemoryStruct characters;
};
-static void startElement(void *userData, const XML_Char *name, const XML_Char **atts)
+static void startElement(void *userData, const XML_Char *name,
+ const XML_Char **atts)
{
struct ParserStruct *state = (struct ParserStruct *) userData;
state->tags++;
@@ -86,16 +90,18 @@ static void endElement(void *userData, const XML_Char *name)
printf("%5lu %10lu %s\n", state->depth, state->characters.size, name);
}
-static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb, void *userp)
+static size_t parseStreamCallback(void *contents, size_t length, size_t nmemb,
+ void *userp)
{
XML_Parser parser = (XML_Parser) userp;
size_t real_size = length * nmemb;
struct ParserStruct *state = (struct ParserStruct *) XML_GetUserData(parser);
/* Only parse if we're not already in a failure state. */
- if (state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
+ if(state->ok && XML_Parse(parser, contents, real_size, 0) == 0) {
int error_code = XML_GetErrorCode(parser);
- fprintf(stderr, "Parsing response buffer of length %lu failed with error code %d (%s).\n",
+ fprintf(stderr, "Parsing response buffer of length %lu failed"
+ " with error code %d (%s).\n",
real_size, error_code, XML_ErrorString(error_code));
state->ok = 0;
}
@@ -123,7 +129,8 @@ int main(void)
/* Initialize a libcurl handle. */
curl_global_init(CURL_GLOBAL_ALL ^ CURL_GLOBAL_SSL);
curl_handle = curl_easy_init();
- curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.w3schools.com/xml/simple.xml");
+ curl_easy_setopt(curl_handle, CURLOPT_URL,
+ "http://www.w3schools.com/xml/simple.xml");
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, parseStreamCallback);
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)parser);
@@ -135,9 +142,9 @@ int main(void)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
- else if (state.ok) {
+ else if(state.ok) {
/* Expat requires one final call to finalize parsing. */
- if (XML_Parse(parser, NULL, 0, 1) == 0) {
+ if(XML_Parse(parser, NULL, 0, 1) == 0) {
int error_code = XML_GetErrorCode(parser);
fprintf(stderr, "Finalizing parsing failed with error code %d (%s).\n",
error_code, XML_ErrorString(error_code));
diff --git a/docs/libcurl/ABI b/docs/libcurl/ABI
index ef0caa6f..c7c91420 100644
--- a/docs/libcurl/ABI
+++ b/docs/libcurl/ABI
@@ -1,63 +1,55 @@
- _ _ ____ _
- ___| | | | _ \| |
- / __| | | | |_) | |
- | (__| |_| | _ <| |___
- \___|\___/|_| \_\_____|
-
- 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.
+ "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
--------
- 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.
+ 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.
Version Numbers
---------------
- In libcurl land, you really can't tell by the libcurl version number if that
- libcurl is binary compatible or not with another libcurl version.
+ In libcurl land, you really can't tell by the libcurl version number if that
+ libcurl is binary compatible or not with another libcurl version.
Soname Bumps
------------
- Whenever there are changes done to the library that will cause an ABI
- breakage, that may require your application to get attention or possibly be
- changed to adhere to new things, we will bump the soname. Then the library
- will get a different output name and thus can in fact be installed in
- parallel with an older installed lib (on most systems). Thus, old
- applications built against the previous ABI version will remain working and
- using the older lib, while newer applications build and use the newer one.
+ Whenever there are changes done to the library that will cause an ABI
+ breakage, that may require your application to get attention or possibly be
+ changed to adhere to new things, we will bump the soname. Then the library
+ will get a different output name and thus can in fact be installed in
+ parallel with an older installed lib (on most systems). Thus, old
+ applications built against the previous ABI version will remain working and
+ using the older lib, while newer applications build and use the newer one.
- During the first seven years of libcurl releases, there have only been four
- ABI breakages.
+ During the first seven years of libcurl releases, there have only been four
+ ABI breakages.
- We are determined to bump the SONAME as rarely as possible. Ideally, we
- never do it again.
+ We are determined to bump the SONAME as rarely as possible. Ideally, we
+ never do it again.
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
- soname, and then your application may need to adapt to the modified ABI.
+ 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
+ soname, and then your application may need to adapt to the modified ABI.
History
-------
diff --git a/docs/libcurl/Makefile.am b/docs/libcurl/Makefile.am
index 39272ac4..49acd977 100644
--- a/docs/libcurl/Makefile.am
+++ b/docs/libcurl/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, 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.
+# are also available at https://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
@@ -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 curl_multi_socket_all.3
HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html \
curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html \
@@ -60,27 +61,29 @@ 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 curl_multi_socket_all.html
PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf \
curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf \
curl_easy_duphandle.pdf curl_formadd.pdf curl_formfree.pdf \
- curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
- curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
+ curl_getdate.pdf curl_getenv.pdf curl_slist_append.pdf \
+ curl_slist_free_all.pdf curl_version.pdf curl_version_info.pdf \
curl_escape.pdf curl_unescape.pdf curl_free.pdf curl_strequal.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 \
+ curl_multi_socket_all.pdf
m4macrodir = $(datadir)/aclocal
dist_m4macro_DATA = libcurl.m4
@@ -89,7 +92,7 @@ CLEANFILES = $(HTMLPAGES) $(PDFPAGES) $(TESTS) libcurl-symbols.3
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES) ABI \
symbols-in-versions symbols.pl mksymbolsmanpage.pl
-MAN2HTML= roffit --mandir=. < $< >$@
+MAN2HTML= roffit --mandir=. $< >$@
SUFFIXES = .3 .html
@@ -97,13 +100,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'`; \
diff --git a/docs/libcurl/curl_easy_cleanup.3 b/docs/libcurl/curl_easy_cleanup.3
index e8cd5509..cc5990e2 100644
--- a/docs/libcurl/curl_easy_cleanup.3
+++ b/docs/libcurl/curl_easy_cleanup.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_easy_duphandle.3 b/docs/libcurl/curl_easy_duphandle.3
index 34cba58c..262cebd3 100644
--- a/docs/libcurl/curl_easy_duphandle.3
+++ b/docs/libcurl/curl_easy_duphandle.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_easy_escape.3 b/docs/libcurl/curl_easy_escape.3
index da2b3822..d2b6cd28 100644
--- a/docs/libcurl/curl_easy_escape.3
+++ b/docs/libcurl/curl_easy_escape.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index d48ca04c..2b4c7fe5 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -34,7 +34,7 @@ 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
@@ -42,248 +42,141 @@ 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.
-
-Support for SMTP responses added in 7.25.0.
+Last received response code.
+See \fICURLINFO_RESPONSE_CODE(3)\fP
.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)
-
-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.
+Last socket used.
+See \fICURLINFO_LASTSOCKET(3)\fP
+.IP CURLINFO_ACTIVESOCKET
+The session's active socket.
+See \fICURLINFO_ACTIVESOCKET(3)\fP
.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)
-
-Also works for SFTP since 7.21.4
+The entry path after logging in to an FTP server.
+See \fICURLINFO_FTP_ENTRY_PATH(3)\fP
.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_SSL_PTR
+TLS session info that can be used for further processing.
+See \fICURLINFO_TLS_SSL_PTR(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. Deprecated option, use
+\fICURLINFO_TLS_SSL_PTR(3)\fP instead!
.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.
-
-Applications wishing to resume an RTSP session on another connection should
-retrieve this info before closing the active connection.
+RTSP session ID.
+See \fICURLINFO_RTSP_SESSION_ID(3)\fP
.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.
-
-\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.
+RTSP CSeq that will next be expected.
+See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP
.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()
diff --git a/docs/libcurl/curl_easy_init.3 b/docs/libcurl/curl_easy_init.3
index 4f7f0042..371a3b81 100644
--- a/docs/libcurl/curl_easy_init.3
+++ b/docs/libcurl/curl_easy_init.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_easy_pause.3 b/docs/libcurl/curl_easy_pause.3
index 0f6ad5a3..131fa774 100644
--- a/docs/libcurl/curl_easy_pause.3
+++ b/docs/libcurl/curl_easy_pause.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -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
@@ -79,7 +79,7 @@ Before libcurl 7.32.0, when a specific handle was unpaused with this function,
there was no particular forced rechecking or similar of the socket's state,
which made the continuation of the transfer get delayed until next
multi-socket call invoke or even longer. Alternatively, the user could
-forcibly call for example curl_multi_socket_all(3) - with a rather hefty
+forcibly call for example \fIcurl_multi_socket_all(3)\fP - with a rather hefty
performance penalty.
Starting in libcurl 7.32.0, unpausing a transfer will schedule a timeout
diff --git a/docs/libcurl/curl_easy_perform.3 b/docs/libcurl/curl_easy_perform.3
index fc8c59e5..48c1f311 100644
--- a/docs/libcurl/curl_easy_perform.3
+++ b/docs/libcurl/curl_easy_perform.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -55,7 +55,7 @@ While the \fBeasy_handle\fP is added to a multi handle, it cannot be used by
.SH RETURN VALUE
CURLE_OK (0) means everything was ok, non-zero means an error occurred as
.I <curl/curl.h>
-defines - see \fIlibcurl-errors(3)\fP. If the \fBCURLOPT_ERRORBUFFER(3)\fP was
+defines - see \fIlibcurl-errors(3)\fP. If the \fICURLOPT_ERRORBUFFER(3)\fP was
set with \fIcurl_easy_setopt(3)\fP there will be a readable error message in
the error buffer when non-zero is returned.
.SH EXAMPLE
diff --git a/docs/libcurl/curl_easy_recv.3 b/docs/libcurl/curl_easy_recv.3
index 9de63649..3560cc51 100644
--- a/docs/libcurl/curl_easy_recv.3
+++ b/docs/libcurl/curl_easy_recv.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -41,15 +41,15 @@ data. \fBbuflen\fP is the maximum amount of data you can get in that
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
+To establish the connection, set \fICURLOPT_CONNECT_ONLY(3)\fP option before
+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 \fICURLINFO_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
diff --git a/docs/libcurl/curl_easy_reset.3 b/docs/libcurl/curl_easy_reset.3
index cb69bddf..0bafb64a 100644
--- a/docs/libcurl/curl_easy_reset.3
+++ b/docs/libcurl/curl_easy_reset.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_easy_send.3 b/docs/libcurl/curl_easy_send.3
index 6f5a6eaf..2a744398 100644
--- a/docs/libcurl/curl_easy_send.3
+++ b/docs/libcurl/curl_easy_send.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -39,7 +39,7 @@ connection set-up.
\fBbuffer\fP is a pointer to the data of length \fBbuflen\fP that you want sent.
The variable \fBn\fP points to will receive the number of sent bytes.
-To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before
+To establish the connection, set \fICURLOPT_CONNECT_ONLY(3)\fP option before
calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform()\fP. Note that
\fIcurl_easy_send(3)\fP will not work on connections that were created without
this option.
@@ -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 \fICURLINFO_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
diff --git a/docs/libcurl/curl_easy_setopt.3 b/docs/libcurl/curl_easy_setopt.3
index 4e5b8dec..75f1ce46 100644
--- a/docs/libcurl/curl_easy_setopt.3
+++ b/docs/libcurl/curl_easy_setopt.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -50,6 +50,8 @@ really \fICURLOPT_POSTFIELDS(3)\fP, but the alternative that copies the string
\fICURLOPT_COPYPOSTFIELDS(3)\fP has some usage characteristics you need to
read up on.
+The order in which the options are set does not matter.
+
Before version 7.17.0, strings were not copied. Instead the user was forced
keep them available until libcurl no longer needed them.
@@ -151,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
@@ -161,14 +165,16 @@ Proxy type. See \fICURLOPT_PROXYTYPE(3)\fP
Filter out hosts from proxy use. \fICURLOPT_NOPROXY(3)\fP
.IP CURLOPT_HTTPPROXYTUNNEL
Tunnel through the HTTP proxy. \fICURLOPT_HTTPPROXYTUNNEL(3)\fP
+.IP CURLOPT_CONNECT_TO
+Connect to a specific host and port. See \fICURLOPT_CONNECT_TO(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_SERVICE
Socks5 GSSAPI service name. \fICURLOPT_SOCKS5_GSSAPI_SERVICE(3)\fP
.IP CURLOPT_SOCKS5_GSSAPI_NEC
Socks5 GSSAPI NEC mode. See \fICURLOPT_SOCKS5_GSSAPI_NEC(3)\fP
.IP CURLOPT_PROXY_SERVICE_NAME
-Proxy service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
+Proxy authentication service name. \fICURLOPT_PROXY_SERVICE_NAME(3)\fP
.IP CURLOPT_SERVICE_NAME
-SPNEGO service name. \fICURLOPT_SERVICE_NAME(3)\fP
+Authentication service name. \fICURLOPT_SERVICE_NAME(3)\fP
.IP CURLOPT_INTERFACE
Bind connection locally to this. See \fICURLOPT_INTERFACE(3)\fP
.IP CURLOPT_LOCALPORT
@@ -183,6 +189,8 @@ OBSOLETE Enable global DNS cache. See \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP
Ask for smaller buffer size. See \fICURLOPT_BUFFERSIZE(3)\fP
.IP CURLOPT_PORT
Port number to connect to. See \fICURLOPT_PORT(3)\fP
+.IP CURLOPT_TCP_FASTOPEN
+Enable TFO, TCP Fast Open. See \fICURLOPT_TCP_FASTOPEN(3)\fP
.IP CURLOPT_TCP_NODELAY
Disable the Nagle algorithm. See \fICURLOPT_TCP_NODELAY(3)\fP
.IP CURLOPT_ADDRESS_SCOPE
@@ -291,6 +299,15 @@ Disable Content decoding. See \fICURLOPT_HTTP_CONTENT_DECODING(3)\fP
Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP
.IP CURLOPT_EXPECT_100_TIMEOUT_MS
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
@@ -301,6 +318,8 @@ Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
.SH TFTP OPTIONS
.IP CURLOPT_TFTP_BLKSIZE
TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
+.IP CURLOPT_TFTP_NO_OPTIONS
+Do not send TFTP options requests. See \fICURLOPT_TFTP_NO_OPTIONS(3)\fP
.SH FTP OPTIONS
.IP CURLOPT_FTPPORT
Use active FTP. See \fICURLOPT_FTPPORT(3)\fP
@@ -523,8 +542,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), "
diff --git a/docs/libcurl/curl_easy_strerror.3 b/docs/libcurl/curl_easy_strerror.3
index 557d4676..ac941220 100644
--- a/docs/libcurl/curl_easy_strerror.3
+++ b/docs/libcurl/curl_easy_strerror.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_easy_unescape.3 b/docs/libcurl/curl_easy_unescape.3
index 23ce9c3c..06fd6fcb 100644
--- a/docs/libcurl/curl_easy_unescape.3
+++ b/docs/libcurl/curl_easy_unescape.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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"
diff --git a/docs/libcurl/curl_escape.3 b/docs/libcurl/curl_escape.3
index 75fd51f2..03f02d32 100644
--- a/docs/libcurl/curl_escape.3
+++ b/docs/libcurl/curl_escape.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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!
diff --git a/docs/libcurl/curl_formadd.3 b/docs/libcurl/curl_formadd.3
index 3e48149e..6923913d 100644
--- a/docs/libcurl/curl_formadd.3
+++ b/docs/libcurl/curl_formadd.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -32,7 +32,7 @@ curl_formadd - add a section to a multipart/formdata HTTP POST
curl_formadd() is used to append sections when building a multipart/formdata
HTTP POST (sometimes referred to as RFC2388-style posts). Append one section
at a time until you've added all the sections you want included and then you
-pass the \fIfirstitem\fP pointer as parameter to \fBCURLOPT_HTTPPOST(3)\fP.
+pass the \fIfirstitem\fP pointer as parameter to \fICURLOPT_HTTPPOST(3)\fP.
\fIlastitem\fP is set after each \fIcurl_formadd(3)\fP call and on repeated
invokes it should be left as set to allow repeated invokes to find the end of
the list faster.
@@ -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
diff --git a/docs/libcurl/curl_formfree.3 b/docs/libcurl/curl_formfree.3
index fd19491c..a2536cd9 100644
--- a/docs/libcurl/curl_formfree.3
+++ b/docs/libcurl/curl_formfree.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ curl_formfree() is used to clean up data previously built/appended with
typically means after \fIcurl_easy_perform(3)\fP has been called.
The pointer to free is the same pointer you passed to the
-\fBCURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
+\fICURLOPT_HTTPPOST(3)\fP option, which is the \fIfirstitem\fP pointer from
the \fIcurl_formadd(3)\fP invoke(s).
\fBform\fP is the pointer as returned from a previous call to
diff --git a/docs/libcurl/curl_formget.3 b/docs/libcurl/curl_formget.3
index b5262213..635c487f 100644
--- a/docs/libcurl/curl_formget.3
+++ b/docs/libcurl/curl_formget.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -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
diff --git a/docs/libcurl/curl_free.3 b/docs/libcurl/curl_free.3
index 9e5570fa..5bbf7453 100644
--- a/docs/libcurl/curl_free.3
+++ b/docs/libcurl/curl_free.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_getdate.3 b/docs/libcurl/curl_getdate.3
index 2e7d7aa7..d09980d0 100644
--- a/docs/libcurl/curl_getdate.3
+++ b/docs/libcurl/curl_getdate.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_getenv.3 b/docs/libcurl/curl_getenv.3
index 33554476..c6bee98d 100644
--- a/docs/libcurl/curl_getenv.3
+++ b/docs/libcurl/curl_getenv.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_global_cleanup.3 b/docs/libcurl/curl_global_cleanup.3
index 83a54e46..2e3ff036 100644
--- a/docs/libcurl/curl_global_cleanup.3
+++ b/docs/libcurl/curl_global_cleanup.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -28,7 +28,7 @@ curl_global_cleanup - global libcurl cleanup
.BI "void curl_global_cleanup(void);"
.ad
.SH DESCRIPTION
-This function releases resources acquired by \fBcurl_global_init(3)\fP.
+This function releases resources acquired by \fIcurl_global_init(3)\fP.
You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
\fIcurl_global_init(3)\fP, after you are done using libcurl.
@@ -36,11 +36,11 @@ You should call \fIcurl_global_cleanup(3)\fP once for each call you make to
\fBThis function is not thread safe.\fP You must not call it when any other
thread in the program (i.e. a thread sharing the same memory) is running.
This doesn't just mean no other thread that is using libcurl. Because
-\fBcurl_global_cleanup(3)\fP calls functions of other libraries that are
+\fIcurl_global_cleanup(3)\fP calls functions of other libraries that are
similarly thread unsafe, it could conflict with any other thread that uses
these other libraries.
-See the description in \fBlibcurl(3)\fP of global environment requirements for
+See the description in \fIlibcurl(3)\fP of global environment requirements for
details of how to use this function.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_global_init.3 b/docs/libcurl/curl_global_init.3
index 77172be6..d56df5b3 100644
--- a/docs/libcurl/curl_global_init.3
+++ b/docs/libcurl/curl_global_init.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -50,7 +50,11 @@ This doesn't just mean no other thread that is using libcurl. Because
similarly thread unsafe, it could conflict with any other thread that uses
these other libraries.
-See the description in \fBlibcurl(3)\fP of global environment requirements for
+If you are initializing libcurl from a Windows DLL you should not initialize it
+from DllMain or a static initializer because Windows holds the loader lock
+during that time and it could cause a deadlock.
+
+See the description in \fIlibcurl(3)\fP of global environment requirements for
details of how to use this function.
.SH FLAGS
diff --git a/docs/libcurl/curl_global_init_mem.3 b/docs/libcurl/curl_global_init_mem.3
index 9cddef7c..7252cf9f 100644
--- a/docs/libcurl/curl_global_init_mem.3
+++ b/docs/libcurl/curl_global_init_mem.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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!
diff --git a/docs/libcurl/curl_mprintf.3 b/docs/libcurl/curl_mprintf.3
index cbf10e1a..e861ed9c 100644
--- a/docs/libcurl/curl_mprintf.3
+++ b/docs/libcurl/curl_mprintf.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -91,15 +91,9 @@ returned string must be free()ed by the receiver.
Like curl_maprintf() but takes a va_list pointer argument instead of a
variable amount of arguments.
.RE
-
-To easily use all these cloned functions instead of the normal ones, #define
-_MPRINTF_REPLACE before you include the <curl/mprintf.h> file. Then all the
-normal names like printf, fprintf, sprintf etc will use the curl-functions
-instead.
.SH AVAILABILITY
-These function will be removed from the public libcurl API in a near
-future. They will instead be made "available" by source code access only, and
-then as curlx_-prefixed functions. See lib/README.curlx for further details.
+These functions will be removed from the public libcurl API in the future. Do
+not use them in any new programs or projects.
.SH RETURN VALUE
The \fBcurl_maprintf\fP and \fBcurl_mvaprintf\fP functions return a pointer to
a newly allocated string, or NULL if it failed.
diff --git a/docs/libcurl/curl_multi_add_handle.3 b/docs/libcurl/curl_multi_add_handle.3
index 253b864b..4c294f5a 100644
--- a/docs/libcurl/curl_multi_add_handle.3
+++ b/docs/libcurl/curl_multi_add_handle.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -31,7 +31,7 @@ CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
Adds a standard easy handle to the multi stack. This function call will make
this \fImulti_handle\fP control the specified \fIeasy_handle\fP.
-While an easy handle is added to a multi stack, you can not and you must not
+While an easy handle is added to a multi stack, you cannot and you must not
use \fIcurl_easy_perform(3)\fP on that handle. After having removed the easy
handle from the multi stack again, it is perfectly fine to use it with the
easy interface again.
diff --git a/docs/libcurl/curl_multi_assign.3 b/docs/libcurl/curl_multi_assign.3
index 0a2378de..75cb86b4 100644
--- a/docs/libcurl/curl_multi_assign.3
+++ b/docs/libcurl/curl_multi_assign.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_cleanup.3 b/docs/libcurl/curl_multi_cleanup.3
index 50bc8adb..07d92160 100644
--- a/docs/libcurl/curl_multi_cleanup.3
+++ b/docs/libcurl/curl_multi_cleanup.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_fdset.3 b/docs/libcurl/curl_multi_fdset.3
index 908ef55f..beef4deb 100644
--- a/docs/libcurl/curl_multi_fdset.3
+++ b/docs/libcurl/curl_multi_fdset.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_info_read.3 b/docs/libcurl/curl_multi_info_read.3
index 03be341b..736183df 100644
--- a/docs/libcurl/curl_multi_info_read.3
+++ b/docs/libcurl/curl_multi_info_read.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_init.3 b/docs/libcurl/curl_multi_init.3
index ca9374e1..e84eb768 100644
--- a/docs/libcurl/curl_multi_init.3
+++ b/docs/libcurl/curl_multi_init.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_perform.3 b/docs/libcurl/curl_multi_perform.3
index 3ec1fade..d2ae541c 100644
--- a/docs/libcurl/curl_multi_perform.3
+++ b/docs/libcurl/curl_multi_perform.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_remove_handle.3 b/docs/libcurl/curl_multi_remove_handle.3
index 1c2165b6..b9daae9b 100644
--- a/docs/libcurl/curl_multi_remove_handle.3
+++ b/docs/libcurl/curl_multi_remove_handle.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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
diff --git a/docs/libcurl/curl_multi_setopt.3 b/docs/libcurl/curl_multi_setopt.3
index 951349f7..d27c5244 100644
--- a/docs/libcurl/curl_multi_setopt.3
+++ b/docs/libcurl/curl_multi_setopt.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -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
diff --git a/docs/libcurl/curl_multi_socket.3 b/docs/libcurl/curl_multi_socket.3
index 6b262f29..52abf1ef 100644
--- a/docs/libcurl/curl_multi_socket.3
+++ b/docs/libcurl/curl_multi_socket.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -43,7 +43,7 @@ decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
which easy handle that completed.
-The \fBcurl_multi_socket_action(3)\fP functions inform the application about
+The \fIcurl_multi_socket_action(3)\fP functions inform the application about
updates in the socket (file descriptor) status by doing none, one, or multiple
calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
@@ -52,7 +52,7 @@ since the previous time the callback was called.
Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
\fIcurl_multi_setopt(3)\fP. Your application will then get called with
information on how long to wait for socket actions at most before doing the
-timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
+timeout action: call the \fIcurl_multi_socket_action(3)\fP function with the
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
for an event-based system using the callback is far better than relying on
@@ -63,7 +63,7 @@ equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
0.
Force libcurl to (re-)check all its internal sockets and transfers instead of
-just a single one by calling \fBcurl_multi_socket_all(3)\fP. Note that there
+just a single one by calling \fIcurl_multi_socket_all(3)\fP. Note that there
should not be any reason to use this function!
.SH "CALLBACK DETAILS"
diff --git a/docs/libcurl/curl_multi_socket_action.3 b/docs/libcurl/curl_multi_socket_action.3
index 45b61058..65a3fb39 100644
--- a/docs/libcurl/curl_multi_socket_action.3
+++ b/docs/libcurl/curl_multi_socket_action.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -27,7 +27,8 @@ curl_multi_socket_action \- reads/writes available data given an action
#include <curl/curl.h>
CURLMcode curl_multi_socket_action(CURLM * multi_handle,
- curl_socket_t sockfd, int ev_bitmask,
+ curl_socket_t sockfd,
+ int ev_bitmask,
int *running_handles);
.fi
.SH DESCRIPTION
@@ -50,16 +51,17 @@ decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
which easy handle that completed.
-The \fBcurl_multi_socket_action(3)\fP functions inform the application about
+The \fIcurl_multi_socket_action(3)\fP functions inform the application about
updates in the socket (file descriptor) status by doing none, one, or multiple
-calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
-option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
-since the previous time the callback was called.
+calls to the socket callback function set with the
+\fICURLMOPT_SOCKETFUNCTION(3)\fP option to \fIcurl_multi_setopt(3)\fP. They
+update the status with changes since the previous time the callback was
+called.
-Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
-\fIcurl_multi_setopt(3)\fP. Your application will then get called with
+Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION(3)\fP option
+with \fIcurl_multi_setopt(3)\fP. Your application will then get called with
information on how long to wait for socket actions at most before doing the
-timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
+timeout action: call the \fIcurl_multi_socket_action(3)\fP function with the
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
for an event-based system using the callback is far better than relying on
@@ -76,7 +78,7 @@ The socket \fBcallback\fP function uses a prototype like this
void *socketp); /* private socket pointer,
\fBNULL\fP if not
previously assigned with
- \fBcurl_multi_assign(3)\fP */
+ \fIcurl_multi_assign(3)\fP */
.fi
The callback MUST return 0.
diff --git a/docs/libcurl/curl_multi_strerror.3 b/docs/libcurl/curl_multi_strerror.3
index 40d0974c..b5aa7afb 100644
--- a/docs/libcurl/curl_multi_strerror.3
+++ b/docs/libcurl/curl_multi_strerror.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_multi_timeout.3 b/docs/libcurl/curl_multi_timeout.3
index f0c90796..71b2b320 100644
--- a/docs/libcurl/curl_multi_timeout.3
+++ b/docs/libcurl/curl_multi_timeout.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -29,12 +29,12 @@ CURLMcode curl_multi_timeout(CURLM *multi_handle, long *timeout);
.SH DESCRIPTION
An application using the libcurl multi interface should call
-\fBcurl_multi_timeout(3)\fP to figure out how long it should wait for socket
+\fIcurl_multi_timeout(3)\fP to figure out how long it should wait for socket
actions \- at most \- before proceeding.
Proceeding means either doing the socket-style timeout action: call the
-\fBcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
-to CURL_SOCKET_TIMEOUT, or call \fBcurl_multi_perform(3)\fP if you're using
+\fIcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
+to CURL_SOCKET_TIMEOUT, or call \fIcurl_multi_perform(3)\fP if you're using
the simpler and older multi interface approach.
The timeout value returned in the long \fBtimeout\fP points to, is in number
@@ -68,9 +68,9 @@ select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
.SH "RETURN VALUE"
The standard CURLMcode for multi interface error codes.
.SH "TYPICAL USAGE"
-Call \fBcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
-figure out which sockets to wait for by calling \fBcurl_multi_fdset(3)\fP or
-by a previous call to \fBcurl_multi_socket(3)\fP.
+Call \fIcurl_multi_timeout(3)\fP, then wait for action on the sockets. You
+figure out which sockets to wait for by calling \fIcurl_multi_fdset(3)\fP or
+by a previous call to \fIcurl_multi_socket(3)\fP.
.SH AVAILABILITY
This function was added in libcurl 7.15.4.
.SH "SEE ALSO"
diff --git a/docs/libcurl/curl_multi_wait.3 b/docs/libcurl/curl_multi_wait.3
index 45c2e8c9..9f15c5f8 100644
--- a/docs/libcurl/curl_multi_wait.3
+++ b/docs/libcurl/curl_multi_wait.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -71,6 +71,48 @@ priority read events such as out of band data.
.IP CURL_WAIT_POLLOUT
Bit flag to curl_waitfd.events indicating the socket should poll on write
events such as the socket being clear to write without blocking.
+.SH EXAMPLE
+.nf
+CURL *easy_handle;
+CURLM *multi_handle;
+
+/* add the individual easy handle */
+curl_multi_add_handle(multi_handle, easy_handle);
+
+do {
+ CURLMcode mc;
+ int numfds;
+
+ mc = curl_multi_perform(multi_handle, &still_running);
+
+ if(mc == CURLM_OK ) {
+ /* wait for activity, timeout or "nothing" */
+ mc = curl_multi_wait(multi_handle, NULL, 0, 1000, &numfds);
+ }
+
+ if(mc != CURLM_OK) {
+ fprintf(stderr, "curl_multi failed, code %d.\n", mc);
+ break;
+ }
+
+ /* 'numfds' being zero means either a timeout or no file descriptors to
+ wait for. Try timeout on first occurrence, then assume no file
+ descriptors and no file descriptors to wait for means wait for 100
+ milliseconds. */
+
+ if(!numfds) {
+ repeats++; /* count number of repeated zero numfds */
+ if(repeats > 1) {
+ WAITMS(100); /* sleep 100 milliseconds */
+ }
+ }
+ else
+ repeats = 0;
+
+} while(still_running);
+
+curl_multi_remove_handle(multi_handle, easy_handle);
+.fi
.SH RETURN VALUE
CURLMcode type, general libcurl multi interface error code. See
\fIlibcurl-errors(3)\fP
diff --git a/docs/libcurl/curl_share_cleanup.3 b/docs/libcurl/curl_share_cleanup.3
index 3af1707b..0b265e86 100644
--- a/docs/libcurl/curl_share_cleanup.3
+++ b/docs/libcurl/curl_share_cleanup.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_share_init.3 b/docs/libcurl/curl_share_init.3
index 4833a8a8..545ba038 100644
--- a/docs/libcurl/curl_share_init.3
+++ b/docs/libcurl/curl_share_init.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_share_setopt.3 b/docs/libcurl/curl_share_setopt.3
index c196743f..55e06f12 100644
--- a/docs/libcurl/curl_share_setopt.3
+++ b/docs/libcurl/curl_share_setopt.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -68,7 +68,8 @@ be used!
SSL session IDs will be shared across the easy handles using this shared
object. This will reduce the time spent in the SSL handshake when reconnecting
to the same server. Note SSL session IDs are reused within the same easy handle
-by default.
+by default. Note this symbol was added in 7.10.3 but was not implemented until
+7.23.0.
.RE
.IP CURLSHOPT_UNSHARE
This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
diff --git a/docs/libcurl/curl_share_strerror.3 b/docs/libcurl/curl_share_strerror.3
index f1bc3986..faa5299d 100644
--- a/docs/libcurl/curl_share_strerror.3
+++ b/docs/libcurl/curl_share_strerror.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_slist_append.3 b/docs/libcurl/curl_slist_append.3
index 529560e8..fed80292 100644
--- a/docs/libcurl/curl_slist_append.3
+++ b/docs/libcurl/curl_slist_append.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,7 +36,7 @@ been appended when this function returns. curl_slist_append() copies the
string.
The list should be freed again (after usage) with
-\fBcurl_slist_free_all(3)\fP.
+\fIcurl_slist_free_all(3)\fP.
.SH RETURN VALUE
A null pointer is returned if anything went wrong, otherwise the new list
pointer is returned.
@@ -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);
diff --git a/docs/libcurl/curl_slist_free_all.3 b/docs/libcurl/curl_slist_free_all.3
index fab3d608..31d81da9 100644
--- a/docs/libcurl/curl_slist_free_all.3
+++ b/docs/libcurl/curl_slist_free_all.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_strequal.3 b/docs/libcurl/curl_strequal.3
index ce575d7a..a745f7eb 100644
--- a/docs/libcurl/curl_strequal.3
+++ b/docs/libcurl/curl_strequal.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_unescape.3 b/docs/libcurl/curl_unescape.3
index 8d16852b..061fbbf5 100644
--- a/docs/libcurl/curl_unescape.3
+++ b/docs/libcurl/curl_unescape.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -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!
diff --git a/docs/libcurl/curl_version.3 b/docs/libcurl/curl_version.3
index 03922c93..4acd73aa 100644
--- a/docs/libcurl/curl_version.3
+++ b/docs/libcurl/curl_version.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/curl_version_info.3 b/docs/libcurl/curl_version_info.3
index e9d5ab70..5244c21b 100644
--- a/docs/libcurl/curl_version_info.3
+++ b/docs/libcurl/curl_version_info.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -76,9 +76,9 @@ typedef struct {
.fi
\fIage\fP describes what the age of this struct is. The number depends on how
-new the libcurl you're using is. You are however guaranteed to get a struct that you
-have a matching struct for in the header, as you tell libcurl your "age" with
-the input argument.
+new the libcurl you're using is. You are however guaranteed to get a struct
+that you have a matching struct for in the header, as you tell libcurl your
+"age" with the input argument.
\fIversion\fP is just an ascii string for the libcurl version.
@@ -149,6 +149,10 @@ libcurl was built with support for HTTP2.
.IP CURL_VERSION_UNIX_SOCKETS
libcurl was built with support for Unix domain sockets.
(Added in 7.40.0)
+.IP CURL_VERSION_PSL
+libcurl was built with support for Mozilla's Public Suffix List. This makes
+libcurl ignore cookies with a domain that's on the list.
+(Added in 7.47.0)
.RE
\fIssl_version\fP is an ASCII string for the OpenSSL version used. If libcurl
has no SSL support, this is NULL.
diff --git a/docs/libcurl/index.html b/docs/libcurl/index.html
index ca773135..f46cc85f 100644
--- a/docs/libcurl/index.html
+++ b/docs/libcurl/index.html
@@ -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>
diff --git a/docs/libcurl/libcurl-easy.3 b/docs/libcurl/libcurl-easy.3
index f8506a26..d112632f 100644
--- a/docs/libcurl/libcurl-easy.3
+++ b/docs/libcurl/libcurl-easy.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/libcurl-errors.3 b/docs/libcurl/libcurl-errors.3
index 07091b5e..0a21a758 100644
--- a/docs/libcurl/libcurl-errors.3
+++ b/docs/libcurl/libcurl-errors.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -74,7 +74,7 @@ After having sent the FTP password to the server, libcurl expects a proper
reply. This error code indicates that an unexpected code was returned.
.IP "CURLE_FTP_ACCEPT_TIMEOUT (12)"
During an active FTP session while waiting for the server to connect, the
-\fICURLOPT_ACCEPTTIMOUT_MS(3)\fP (or the internal default) timeout expired.
+\fICURLOPT_ACCEPTTIMEOUT_MS(3)\fP (or the internal default) timeout expired.
.IP "CURLE_FTP_WEIRD_PASV_REPLY (13)"
libcurl failed to get a sensible result back from the server as a response to
either a PASV or a EPSV command. The server is flawed.
@@ -247,6 +247,12 @@ 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_HTTP2_STREAM (92)"
+Stream error in the HTTP/2 framing layer.
.IP "CURLE_OBSOLETE*"
These error codes will never be returned. They were used in an old libcurl
version and are currently unused.
diff --git a/docs/libcurl/libcurl-multi.3 b/docs/libcurl/libcurl-multi.3
index f77c366a..a7f3dbbf 100644
--- a/docs/libcurl/libcurl-multi.3
+++ b/docs/libcurl/libcurl-multi.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -51,28 +51,27 @@ To use the multi interface, you must first create a 'multi handle' with
\fIcurl_multi_init(3)\fP. This handle is then used as input to all further
curl_multi_* functions.
-With a multi handle and the multi interface you can do any amount of
-simultaneous transfers in parallel. Each single transfer is built up around an
-easy handle. You must create the easy handles you need, and setup the
-appropriate options for each easy handle, as outlined in the \fIlibcurl(3)\fP
-man page, using \fIcurl_easy_setopt(3)\fP.
+With a multi handle and the multi interface you can do several simultaneous
+transfers in parallel. Each single transfer is built up around an easy
+handle. You create all the easy handles you need, and setup the appropriate
+options for each easy handle using \fIcurl_easy_setopt(3)\fP.
There are two flavours of the multi interface, the select() oriented one and
-the event based one we called multi_socket. You will benefit from reading
-through the description of both versions to full understand how they work and
+the event based one we call multi_socket. You will benefit from reading
+through the description of both versions to fully understand how they work and
differentiate. We start out with the select() oriented version.
-When an easy handle is setup for a transfer, then instead of using
+When an easy handle is setup and ready for transfer, then instead of using
\fIcurl_easy_perform(3)\fP like when using the easy interface for transfers,
you should add the easy handle to the multi handle with
-\fIcurl_multi_add_handle(3)\fP. The multi handle is sometimes referred to as a
-\'multi stack\' because of the fact that it may hold a large amount of easy
-handles.
+\fIcurl_multi_add_handle(3)\fP. You can add more easy handles to a multi
+handle at any point, even if other transfers are already running.
Should you change your mind, the easy handle is again removed from the multi
stack using \fIcurl_multi_remove_handle(3)\fP. Once removed from the multi
handle, you can again use other easy interface functions like
-\fIcurl_easy_perform(3)\fP on the handle or whatever you think is necessary.
+\fIcurl_easy_perform(3)\fP on the handle or whatever you think is
+necessary. You can remove handles at any point in time during transfers.
Adding the easy handle to the multi handle does not start the transfer.
Remember that one of the main ideas with this interface is to let your
@@ -84,16 +83,16 @@ current transfers in the multi stack that are ready to transfer anything. It
may be all, it may be none. When there's nothing more to do for now, it
returns back to the calling application.
-Your application can acquire knowledge from libcurl when it would like to get
-invoked to transfer data, so that you don't have to busy-loop and call that
-\fIcurl_multi_perform(3)\fP like crazy. \fIcurl_multi_fdset(3)\fP offers an
-interface using which you can extract fd_sets from libcurl to use in select()
-or poll() calls in order to get to know when the transfers in the multi stack
-might need attention. This also makes it very easy for your program to wait
-for input on your own private file descriptors at the same time or perhaps
-timeout every now and then, should you want that. \fIcurl_multi_timeout(3)\fP
-also helps you with providing a suitable timeout period for your select()
-call.
+Your application extracts info from libcurl about when it would like to get
+invoked to transfer data or do other work. The most convenient way is to use
+\fIcurl_multi_wait(3)\fP that will help you wait until the application should
+call libcurl again. The older API to accomplish the same thing is
+\fIcurl_multi_fdset(3)\fP that extracts fd_sets from libcurl to use in
+select() or poll() calls in order to get to know when the transfers in the
+multi stack might need attention. Both these APIs allow for your program to
+wait for input on your own private file descriptors at the same time
+\fIcurl_multi_timeout(3)\fP also helps you with providing a suitable timeout
+period for your select() calls.
\fIcurl_multi_perform(3)\fP stores the number of still running transfers in
one of its input arguments, and by reading that you can figure out when all
@@ -114,9 +113,9 @@ the multi stack. You need to first remove the easy handle with
\fIcurl_easy_cleanup(3)\fP, or possibly set new options to it and add it again
with \fIcurl_multi_add_handle(3)\fP to start another transfer.
-When all transfers in the multi stack are done, cleanup the multi handle with
+When all transfers in the multi stack are done, close the multi handle with
\fIcurl_multi_cleanup(3)\fP. Be careful and please note that you \fBMUST\fP
-invoke separate \fIcurl_easy_cleanup(3)\fP calls on every single easy handle
+invoke separate \fIcurl_easy_cleanup(3)\fP calls for every single easy handle
to clean them up properly.
If you want to re-use an easy handle that was added to the multi handle for
diff --git a/docs/libcurl/libcurl-share.3 b/docs/libcurl/libcurl-share.3
index b46eedae..c7cd6554 100644
--- a/docs/libcurl/libcurl-share.3
+++ b/docs/libcurl/libcurl-share.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/libcurl-thread.3 b/docs/libcurl/libcurl-thread.3
new file mode 100644
index 00000000..379ca8ff
--- /dev/null
+++ b/docs/libcurl/libcurl-thread.3
@@ -0,0 +1,105 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 2015 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH libcurl-thread 3 "13 Jul 2015" "libcurl" "libcurl thread safety"
+.SH NAME
+libcurl-thread \- libcurl thread safety
+.SH "Multi-threading with libcurl"
+libcurl is thread safe but has no internal thread synchronization. You may have
+to provide your own locking should you meet any of the thread safety exceptions
+below.
+
+\fBHandles.\fP You must \fBnever\fP share the same handle in multiple threads.
+You can pass the handles around among threads, but you must never use a single
+handle from more than one thread at any given time.
+
+\fBShared objects.\fP You can share certain data between multiple handles by
+using the share interface but you must provide your own locking and set
+\fIcurl_share_setopt(3)\fP CURLSHOPT_LOCKFUNC and CURLSHOPT_UNLOCKFUNC.
+.SH TLS
+If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
+then of course using the underlying SSL library multi-threaded and those libs
+might have their own requirements on this issue. You may need to provide one
+or two functions to allow it to function properly:
+.IP OpenSSL
+OpenSSL 1.1.0 "can be safely used in multi-threaded applications provided that
+support for the underlying OS threading API is built-in."
+
+https://www.openssl.org/docs/manmaster/crypto/threads.html#DESCRIPTION
+
+OpenSSL <= 1.0.2 the user must set callbacks.
+
+https://www.openssl.org/docs/man1.0.2/crypto/threads.html#DESCRIPTION
+
+https://curl.haxx.se/libcurl/c/opensslthreadlock.html
+
+.IP GnuTLS
+http://gnutls.org/manual/html_node/Thread-safety.html
+.IP NSS
+thread-safe already without anything required.
+.IP PolarSSL
+Required actions unknown.
+.IP yassl
+Required actions unknown.
+.IP axTLS
+Required actions unknown.
+.IP Secure-Transport
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP WinSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP wolfSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.IP BoringSSL
+The engine is used by libcurl in a way that is fully thread-safe.
+.SH "Other areas of caution"
+.IP Signals
+Signals are used for timing out name resolves (during DNS lookup) - when built
+without using either the c-ares or threaded resolver backends. When using
+multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP option to 1L for
+all handles. Everything will or might work fine except that timeouts are not
+honored during the DNS lookup - which you can work around by building libcurl
+with c-ares support. c-ares is a library that provides asynchronous name
+resolves. On some platforms, libcurl simply will not function properly
+multi-threaded unless this option is set.
+.IP "Name resolving"
+\fBgethostby* functions and other system calls.\fP These functions, provided
+by your operating system, must be thread safe. It is very important that
+libcurl can find and use thread safe versions of these and other system calls,
+as otherwise it can't function fully thread safe. Some operating systems are
+known to have faulty thread implementations. We have previously received
+problem reports on *BSD (at least in the past, they may be working fine these
+days). Some operating systems that are known to have solid and working thread
+support are Linux, Solaris and Windows.
+.IP "curl_global_* functions"
+These functions are not thread safe. If you are using libcurl with multiple
+threads it is especially important that before use you call
+\fIcurl_global_init(3)\fP or \fIcurl_global_init_mem(3)\fP to explicitly
+initialize the library and its dependents, rather than rely on the "lazy"
+fail-safe initialization that takes place the first time
+\fIcurl_easy_init(3)\fP is called. For an in-depth explanation refer to
+\fIlibcurl(3)\fP section \fBGLOBAL CONSTANTS\fP.
+.IP "Memory functions"
+These functions, provided either by your operating system or your own
+replacements, must be thread safe. You can use \fIcurl_global_init_mem(3)\fP
+to set your own replacement memory functions.
+.IP "Non-safe functions"
+\fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
diff --git a/docs/libcurl/libcurl-tutorial.3 b/docs/libcurl/libcurl-tutorial.3
index 11b01901..3144da3c 100644
--- a/docs/libcurl/libcurl-tutorial.3
+++ b/docs/libcurl/libcurl-tutorial.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -256,58 +256,8 @@ complication for you. Given simply the URL to a file, libcurl will take care
of all the details needed to get the file moved from one machine to another.
.SH "Multi-threading Issues"
-The first basic rule is that you must \fBnever\fP simultaneously share a
-libcurl handle (be it easy or multi or whatever) between multiple
-threads. Only use one handle in one thread at any time. You can pass the
-handles around among threads, but you must never use a single handle from more
-than one thread at any given time.
-
-libcurl is completely thread safe, except for two issues: signals and SSL/TLS
-handlers. Signals are used for timing out name resolves (during DNS lookup) -
-when built without using either the c-ares or threaded resolver backends.
-
-If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
-then of course using the underlying SSL library multi-threaded and those libs
-might have their own requirements on this issue. Basically, you need to
-provide one or two functions to allow it to function properly. For all
-details, see this:
-
-OpenSSL
-
- http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
-
-GnuTLS
-
- http://gnutls.org/manual/html_node/Thread-safety.html
-
-NSS
-
- is claimed to be thread-safe already without anything required.
-
-PolarSSL
-
- Required actions unknown.
-
-yassl
-
- Required actions unknown.
-
-axTLS
-
- Required actions unknown.
-
-Secure Transport
-
- The engine is fully thread-safe, and no additional steps are required.
-
-When using multiple threads you should set the \fICURLOPT_NOSIGNAL(3)\fP
-option to 1 for all handles. Everything will or might work fine except that
-timeouts are not honored during the DNS lookup - which you can work around by
-building libcurl with c-ares support. c-ares is a library that provides
-asynchronous name resolves. On some platforms, libcurl simply will not
-function properly multi-threaded unless this option is set.
-
-Also, note that \fICURLOPT_DNS_USE_GLOBAL_CACHE(3)\fP is not thread-safe.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "When It Doesn't Work"
There will always be times when the transfer fails for some reason. You might
@@ -1005,7 +955,7 @@ or understand incoming cookies and they will just be ignored. However, when
the parser is enabled the cookies will be understood and the cookies will be
kept in memory and used properly in subsequent requests when the same handle
is used. Many times this is enough, and you may not have to save the cookies
-to disk at all. Note that the file you specify to \ICURLOPT_COOKIEFILE(3)\fP
+to disk at all. Note that the file you specify to \fICURLOPT_COOKIEFILE(3)\fP
doesn't have to exist to enable the parser, so a common way to just enable the
parser and not read any cookies is to use the name of a file you know doesn't
exist.
@@ -1096,7 +1046,7 @@ input from potentially untrusted users. Following is a discussion about
some risks in the ways in which applications commonly use libcurl and
potential mitigations of those risks. It is by no means comprehensive, but
shows classes of attacks that robust applications should consider. The
-Common Weakness Enumeration project at http://cwe.mitre.org/ is a good
+Common Weakness Enumeration project at https://cwe.mitre.org/ is a good
reference for many of these and similar types of weaknesses of which
application writers should be aware.
@@ -1136,11 +1086,15 @@ NTLM authentication, HTTPS, FTPS, SCP and SFTP are a few examples.
.IP "Redirects"
The \fICURLOPT_FOLLOWLOCATION(3)\fP option automatically follows HTTP
redirects sent by a remote server. These redirects can refer to any kind of
-URL, not just HTTP. A redirect to a file: URL would cause the libcurl to read
-(or write) arbitrary files from the local filesystem. If the application
-returns the data back to the user (as would happen in some kinds of CGI
-scripts), an attacker could leverage this to read otherwise forbidden data
-(e.g. file://localhost/etc/passwd).
+URL, not just HTTP. By default libcurl 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.
+
+A redirect to a file: URL would cause the libcurl to read (or write) arbitrary
+files from the local filesystem. If the application returns the data back to
+the user (as would happen in some kinds of CGI scripts), an attacker could
+leverage this to read otherwise forbidden data (e.g.
+file://localhost/etc/passwd).
If authentication credentials are stored in the ~/.netrc file, or Kerberos
is in use, any other URL type (not just file:) that requires
diff --git a/docs/libcurl/libcurl.3 b/docs/libcurl/libcurl.3
index 39bcccd4..6618734b 100644
--- a/docs/libcurl/libcurl.3
+++ b/docs/libcurl/libcurl.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -97,8 +97,8 @@ Unix-like operating system that ship libcurl as part of their distributions
often don't provide the curl-config tool, but simply install the library and
headers in the common path for this purpose.
-Many Linux and similar sytems use pkg-config to provide build and link options
-about libraries and libcurl supports that as well.
+Many Linux and similar systems use pkg-config to provide build and link
+options about libraries and libcurl supports that as well.
.SH "LIBCURL SYMBOL NAMES"
All public functions in the libcurl interface are prefixed with 'curl_' (with
a lowercase c). You can find other functions in the library source code, but
@@ -111,13 +111,8 @@ libcurl works
.B exactly
the same, on any of the platforms it compiles and builds on.
.SH "THREADS"
-Never ever call curl-functions simultaneously using the same handle from
-several threads. libcurl is thread-safe and can be used in any number of
-threads, but you must use separate curl handles if you want to use libcurl in
-more than one thread simultaneously.
-
-The global environment functions are not thread-safe. See \fBGLOBAL
-CONSTANTS\fP below for details.
+libcurl is thread safe but there are a few exceptions. Refer to
+\fIlibcurl-thread(3)\fP for more information.
.SH "PERSISTENT CONNECTIONS"
Persistent connections means that libcurl can re-use the same connection for
@@ -199,6 +194,9 @@ object as the program starts up and the destructor as it terminates. As the
author of this libcurl-using module, you can make the constructor call
\fIcurl_global_init(3)\fP and the destructor call \fIcurl_global_cleanup(3)\fP
and satisfy libcurl's requirements without your user having to think about it.
+(Caveat: If you are initializing libcurl from a Windows DLL you should not
+initialize it from DllMain or a static initializer because Windows holds the
+loader lock during that time and it could cause a deadlock.)
\fIcurl_global_init(3)\fP has an argument that tells what particular parts of
the global constant environment to set up. In order to successfully use any
diff --git a/docs/libcurl/libcurl.m4 b/docs/libcurl/libcurl.m4
index 2cf3edd1..53d694d0 100644
--- a/docs/libcurl/libcurl.m4
+++ b/docs/libcurl/libcurl.m4
@@ -9,7 +9,7 @@
#
# 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.
+# are also available at https://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
@@ -82,7 +82,7 @@ AC_DEFUN([LIBCURL_CHECK_CONFIG],
AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP])
AC_ARG_WITH(libcurl,
- AC_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]),
+ AS_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]),
[_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])])
if test "$_libcurl_with" != "no" ; then
@@ -178,7 +178,7 @@ x=CURLOPT_WRITEDATA;
x=CURLOPT_ERRORBUFFER;
x=CURLOPT_STDERR;
x=CURLOPT_VERBOSE;
-if (x) ;
+if (x) {;}
]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no)
CPPFLAGS=$_libcurl_save_cppflags
diff --git a/docs/libcurl/mksymbolsmanpage.pl b/docs/libcurl/mksymbolsmanpage.pl
index 1bca4d07..21053c40 100644
--- a/docs/libcurl/mksymbolsmanpage.pl
+++ b/docs/libcurl/mksymbolsmanpage.pl
@@ -10,7 +10,7 @@
# *
# * 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.
+# * are also available at https://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
@@ -39,7 +39,7 @@ print <<HEADER
.\\" *
.\\" * 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.
+.\\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
new file mode 100644
index 00000000..0896d150
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_ACTIVESOCKET 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_ACTIVESOCKET \- get the active socket
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
+ curl_socket_t *socket);
+.SH DESCRIPTION
+Pass a pointer to a curl_socket_t to receive the active socket used by this
+curl session. If the socket is no longer valid, \fICURL_SOCKET_BAD\fP is
+returned. When you finish working with the socket, you must call
+\fIcurl_easy_cleanup(3)\fP as usual on the easy handle 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.
+
+This option was added as a replacement for \fICURLINFO_LASTSOCKET(3)\fP since
+that one isn't working on all platforms.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.45.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_LASTSOCKET "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
new file mode 100644
index 00000000..dceb98b0
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_APPCONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double *timep);
+.SH DESCRIPTION
+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 \fICURLINFO_PRETRANSFER_TIME(3)\fP
+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.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CERTINFO.3 b/docs/libcurl/opts/CURLINFO_CERTINFO.3
new file mode 100644
index 00000000..c76daa7a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CERTINFO.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CERTINFO 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CERTINFO \- get the TLS certificate chain
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
+ struct curl_certinfo *chainp);
+.SH DESCRIPTION
+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 request was
+made. 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.
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+This option is only working in libcurl built with OpenSSL, NSS or GSKit
+support.
+
+Added in 7.19.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
new file mode 100644
index 00000000..452c261f
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONDITION_UNMET 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONDITION_UNMET \- get info on unmet time conditional
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET, long *unmet);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+HTTP and some
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
new file mode 100644
index 00000000..1b63e238
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONNECT_TIME \- get the time until connect
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds from the start
+until the connection to the remote host (or proxy) was completed.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
new file mode 100644
index 00000000..311f313a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content-length of download
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
+ double *content_length);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.6.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_CONTENT_LENGTH_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
new file mode 100644
index 00000000..e40d5ea9
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
+ double *content_length);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.6.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
new file mode 100644
index 00000000..7536000c
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_CONTENT_TYPE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_CONTENT_TYPE \- get Content-Type
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
+.SH DESCRIPTION
+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.
+
+The \fBct\fP pointer will be NULL or pointing to private memory you MUST NOT
+free it - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_COOKIELIST.3 b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
new file mode 100644
index 00000000..961fd982
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_COOKIELIST.3
@@ -0,0 +1,50 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_COOKIELIST 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_COOKIELIST \- get all known cookies
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
+ struct curl_slist **cookies);
+.SH DESCRIPTION
+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 call
+\fIcurl_slist_free_all(3)\fP on 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.
+
+Since 7.43.0 cookies that were imported in the Set-Cookie format without a
+domain name are not exported by this option.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.14.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLOPT_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
new file mode 100644
index 00000000..342fd5dc
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_EFFECTIVE_URL 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_EFFECTIVE_URL \- get the last used URL
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
+.SH DESCRIPTION
+Pass in a pointer to a char pointer and get the last used effective URL.
+
+In cases when you've asked libcurl to follow redirects, it may very well not
+be the same value you set with \fICURLOPT_URL(3)\fP.
+
+The \fBurlp\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_FILETIME.3 b/docs/libcurl/opts/CURLINFO_FILETIME.3
new file mode 100644
index 00000000..84093eb2
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_FILETIME.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FILETIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_FILETIME \- get the remote time of the retrieved document
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
+.SH DESCRIPTION
+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 (it might be unknown, the server might
+hide 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.
+.SH PROTOCOLS
+HTTP(S), FTP(S), SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
new file mode 100644
index 00000000..e7d7fcff
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3
@@ -0,0 +1,48 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_FTP_ENTRY_PATH 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
+.SH DESCRIPTION
+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.
+
+The \fBpath\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+FTP(S) and SFTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.4. Works for SFTP since 7.21.4
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
new file mode 100644
index 00000000..b4b9b578
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HEADER_SIZE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HEADER_SIZE \- get size of retrieved headers
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the total size of all the headers
+received. Measured in number of bytes.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_REQUEST_SIZE "(3), "
+.BR CURLINFO_SIZE_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
new file mode 100644
index 00000000..a5d0e725
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HTTPAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_HTTPAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.8
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
new file mode 100644
index 00000000..acfef77f
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_HTTP_CONNECTCODE 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the last received HTTP proxy response code
+to a CONNECT request. The returned value will be zero if no such response code
+was available.
+.SH PROTOCOLS
+HTTP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLINFO_RESPONSE_CODE "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
new file mode 100644
index 00000000..8e734531
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LASTSOCKET.3
@@ -0,0 +1,53 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LASTSOCKET 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LASTSOCKET \- get the last socket used
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
+.SH DESCRIPTION
+Deprecated since 7.45.0. Use \fICURLINFO_ACTIVESOCKET(3)\fP instead.
+
+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.
+
+NOTE: this API is deprecated since it is not working on win64 where the SOCKET
+type is 64 bits large while its 'long' is 32 bits. Use the
+\fICURLINFO_ACTIVESOCKET(3)\fP instead, if possible.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.15.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_ACTIVESOCKET "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
new file mode 100644
index 00000000..b2228e22
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_IP.3
@@ -0,0 +1,51 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LOCAL_IP 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LOCAL_IP \- get local IP address of last connection
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive the pointer to a zero-terminated
+string holding the IP address of the local end of most recent connection done
+with this \fBcurl\fP handle. This string may be IPv6 when that is
+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.
+
+The \fBip\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
new file mode 100644
index 00000000..aa7f418e
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_LOCAL_PORT 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_LOCAL_PORT \- get the latest local port number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the local port number of the most recent
+connection done with this \fBcurl\fP handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_PORT "(3), " CURLINFO_LOCAL_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
new file mode 100644
index 00000000..68059ec6
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_NAMELOOKUP_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds from the start
+until the name resolving was completed.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
new file mode 100644
index 00000000..eccff500
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_NUM_CONNECTS 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_NUM_CONNECTS \- get number of created connections
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
+.SH DESCRIPTION
+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(3)\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.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
new file mode 100644
index 00000000..b56d40ea
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_OS_ERRNO.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_OS_ERRNO 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_OS_ERRNO \- get errno number from last connect failure
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
+.SH DESCRIPTION
+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. The number is OS and system specific.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
new file mode 100644
index 00000000..c445ea09
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRETRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double *timep);
+.SH DESCRIPTION
+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.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
new file mode 100644
index 00000000..9d276ead
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIMARY_IP 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIMARY_IP \- get IP address of last connection
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
+.SH DESCRIPTION
+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 when that is 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.
+
+The \fBip\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.19.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_PRIMARY_PORT "(3), " CURLINFO_LOCAL_IP "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
new file mode 100644
index 00000000..45ed6a68
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIMARY_PORT 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIMARY_PORT \- get the latest destination port number
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the destination port of the most recent
+connection done with this \fBcurl\fP handle.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.21.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PRIVATE.3 b/docs/libcurl/opts/CURLINFO_PRIVATE.3
new file mode 100644
index 00000000..a7fe9d53
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PRIVATE.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PRIVATE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PRIVATE \- get the private pointer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
+.SH DESCRIPTION
+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).
+Please note that for internal reasons, the value is returned as a char
+pointer, although effectively being a 'void *'.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.3
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLOPT_PRIVATE "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
new file mode 100644
index 00000000..d07c5b95
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_PROXYAUTH_AVAIL 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL, long *authp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive a bitmask indicating the authentication
+method(s) available according to the previous response. The meaning of the
+bits is explained in the \fICURLOPT_PROXYAUTH(3)\fP option for
+\fIcurl_easy_setopt(3)\fP.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.10.8
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
new file mode 100644
index 00000000..ee1ebbb6
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_COUNT 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_COUNT \- get the number of redirects
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT, long *countp);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the total number of redirections that were
+actually followed.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
new file mode 100644
index 00000000..1a9e6dfb
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double *timep);
+.SH DESCRIPTION
+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.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.7
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
new file mode 100644
index 00000000..a7bf7261
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REDIRECT_URL 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.18.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
new file mode 100644
index 00000000..6f857353
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_REQUEST_SIZE 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_REQUEST_SIZE \- get size of sent request
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
+.SH DESCRIPTION
+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 \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_HEADER_SIZE "(3), "
+.BR CURLINFO_SIZE_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
new file mode 100644
index 00000000..b1f48473
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RESPONSE_CODE 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RESPONSE_CODE \- get the last response code
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
+.SH DESCRIPTION
+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 stored 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(3)\fP and not this.
+
+Support for SMTP responses added in 7.25.0.
+.SH PROTOCOLS
+HTTP, FTP and SMTP
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ CURLcode res;
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+ res = curl_easy_perform(curl);
+ if(res == CURLE_OK) {
+ long response_code;
+ curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.10.8. CURLINFO_HTTP_CODE was added in 7.4.1.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_HTTP_CONNECTCODE "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
new file mode 100644
index 00000000..822fde83
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ, long *cseq);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the next CSeq that will be used by the
+application.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
new file mode 100644
index 00000000..13d13191
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3
@@ -0,0 +1,44 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_CSEQ_RECV 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
new file mode 100644
index 00000000..571a915c
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_SERVER_CSEQ 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ, long *cseq);
+.SH DESCRIPTION
+Pass a pointer to a long to receive the next CSeq that will be expected by the
+application.
+
+Llistening for server initiated requests is currently unimplemented!
+
+Applications wishing to resume an RTSP session on another connection should
+retrieve this info before closing the active connection.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
new file mode 100644
index 00000000..4d4d3f1d
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_RTSP_SESSION_ID 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
+.SH DESCRIPTION
+Pass a pointer to a char pointer to receive a pointer to a string holding the
+most recent RTSP Session ID.
+
+Applications wishing to resume an RTSP session on another connection should
+retrieve this info before closing the active connection.
+
+The \fBid\fP pointer will be NULL or pointing to private memory you MUST NOT
+free - it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
+corresponding CURL handle.
+.SH PROTOCOLS
+RTSP
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.20.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
new file mode 100644
index 00000000..85039ffe
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SIZE_DOWNLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
new file mode 100644
index 00000000..034c6df4
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SIZE_UPLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD, double *uploadp);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total amount of bytes that were
+uploaded.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
new file mode 100644
index 00000000..ef1c739e
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SPEED_DOWNLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SPEED_DOWNLOAD \- get download speed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD, double *speed);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the average download speed that curl
+measured for the complete download. Measured in bytes/second.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_SPEED_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
new file mode 100644
index 00000000..f79ea1f1
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3
@@ -0,0 +1,42 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SPEED_UPLOAD 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SPEED_UPLOAD \- get upload speed
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the average upload speed that curl
+measured for the complete upload. Measured in bytes/second.
+.SH PROTOCOLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_SPEED_DOWNLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
new file mode 100644
index 00000000..c1ebfc9a
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SSL_ENGINES 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto-engines
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
+ struct curl_slist **engine_list);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+All TLS based ones.
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.12.3. Available in OpenSSL builds with "engine" support.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
new file mode 100644
index 00000000..a87ccfe0
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3
@@ -0,0 +1,43 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_SSL_VERIFYRESULT 3 "1 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_SSL_VERIFYRESULT \- get the result of the certification verification
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT, long *result);
+.SH DESCRIPTION
+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.
+.SH PROTOCOLS
+All using TLS
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.5
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
new file mode 100644
index 00000000..54643648
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -0,0 +1,46 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_STARTTRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double *timep);
+.SH DESCRIPTION
+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
+\fICURLINFO_PRETRANSFER_TIME(3)\fP and also the time the server needs to
+calculate the result.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.9.2
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
new file mode 100644
index 00000000..3cc3b655
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TLS_SESSION.3
@@ -0,0 +1,60 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TLS_SESSION 3 "12 Sep 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TLS_SESSION \- get TLS session info
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
+ struct curl_tlssessioninfo **session);
+.SH DESCRIPTION
+\fBThis option has been superseded\fP by \fICURLINFO_TLS_SSL_PTR(3)\fP which
+was added in 7.48.0. The only reason you would use this option instead is if
+you could be using a version of libcurl earlier than 7.48.0.
+
+This option is exactly the same as \fICURLINFO_TLS_SSL_PTR(3)\fP except in the
+case of OpenSSL. If the session \fIbackend\fP is CURLSSLBACKEND_OPENSSL the
+session \fIinternals\fP pointer varies depending on the option:
+
+CURLINFO_TLS_SESSION OpenSSL session \fIinternals\fP is SSL_CTX *.
+
+CURLINFO_TLS_SSL_PTR OpenSSL session \fIinternals\fP is SSL *.
+
+You can obtain an SSL_CTX pointer from an SSL pointer using OpenSSL function
+SSL_get_SSL_CTX. Therefore unless you need compatibility with older versions of
+libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to that document for more
+information.
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.34.0, and supported OpenSSL, GnuTLS, NSS and gskit only up until
+7.48.0 was released.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_TLS_SSL_PTR "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
new file mode 100644
index 00000000..decf0fca
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3
@@ -0,0 +1,141 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TLS_SSL_PTR 3 "23 Feb 2016" "libcurl 7.48.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
+ struct curl_tlssessioninfo **session);
+
+/* if you need compatibility with libcurl < 7.48.0 use
+ CURLINFO_TLS_SESSION instead: */
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
+ struct curl_tlssessioninfo **session);
+.SH DESCRIPTION
+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 a pointer to the
+respective internal TLS session structure of this underlying SSL library.
+
+This option may be useful for example to extract certificate information in a
+format convenient for further processing, such as manual validation. Refer to
+the \fBLIMITATIONS\fP section.
+
+.nf
+struct curl_tlssessioninfo {
+ curl_sslbackend backend;
+ void *internals;
+};
+.fi
+
+The \fIbackend\fP struct member is one of the defines in the CURLSSLBACKEND_*
+series: CURLSSLBACKEND_NONE (when built without TLS support),
+CURLSSLBACKEND_AXTLS, CURLSSLBACKEND_CYASSL, CURLSSLBACKEND_DARWINSSL,
+CURLSSLBACKEND_GNUTLS, CURLSSLBACKEND_GSKIT, CURLSSLBACKEND_MBEDTLS,
+CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL, CURLSSLBACKEND_POLARSSL or
+CURLSSLBACKEND_SCHANNEL. (Note that the OpenSSL forks are all reported as just
+OpenSSL here.)
+
+The \fIinternals\fP struct member will point to a TLS library specific pointer
+for the active ("in use") SSL connection, with the following underlying types:
+.RS
+.IP GnuTLS
+gnutls_session_t
+.IP gskit
+gsk_handle
+.IP NSS
+PRFileDesc *
+.IP OpenSSL
+CURLINFO_TLS_SESSION: SSL_CTX *
+
+CURLINFO_TLS_SSL_PTR: SSL *
+.RE
+Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
+as well:
+.RS
+.IP axTLS
+SSL *
+.IP mbedTLS
+mbedtls_ssl_context *
+.IP PolarSSL
+ssl_context *
+.IP "Secure Channel (WinSSL)"
+CtxtHandle *
+.IP "Secure Transport (DarwinSSL)"
+SSLContext *
+.IP "WolfSSL (formerly CyaSSL)"
+SSL *
+.RE
+
+If the \fIinternals\fP pointer is NULL then either the SSL backend is not
+supported, an SSL session has not yet been established or the connection is no
+longer associated with the easy handle (eg curl_easy_perform has returned).
+.SH LIMITATIONS
+\fBThis option has some limitations that could make it unsafe when it comes to
+the manual verification of certificates.\fP
+
+This option only retrieves the first in-use SSL session pointer for your easy
+handle, however your easy handle may have more than one in-use SSL session if
+using FTP over SSL. That is because the FTP protocol has a control channel and
+a data channel and one or both may be over SSL. \fBCurrently there is no way to
+retrieve a second in-use SSL session associated with an easy handle.\fP
+
+This option has not been thoroughly tested with plaintext protocols that can be
+upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
+\fICURLOPT_USE_SSL(3)\fP. Though you will be able to retrieve the SSL pointer,
+it's possible that before you can do that \fBdata (including auth) may have
+already been sent over a connection after it was upgraded.\fP
+
+Renegotiation. If unsafe renegotiation or renegotiation in a way that the
+certificate is allowed to change is allowed by your SSL library this may occur
+and the certificate may change, and \fBdata may continue to be sent or received
+after renegotiation but before you are able to get the (possibly) changed SSL
+pointer,\fP with the (possibly) changed certificate information.
+
+If you are using OpenSSL or wolfSSL then \fICURLOPT_SSL_CTX_FUNCTION(3)\fP can
+be used to set a certificate verification callback in the CTX. That is safer
+than using this option to poll for certificate changes and doesn't suffer from
+any of the problems above. There is currently no way in libcurl to set a
+verification callback for the other SSL backends.
+
+How are you using this option? Are you affected by any of these limitations?
+Please let us know by making a comment at
+https://github.com/curl/curl/issues/685
+.SH PROTOCOLS
+All TLS-based
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.48.0.
+
+This option supersedes \fICURLINFO_TLS_SESSION(3)\fP which was added in 7.34.0.
+This option is exactly the same as that option except in the case of OpenSSL.
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR CURLINFO_TLS_SESSION "(3), "
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
new file mode 100644
index 00000000..b068a8b8
--- /dev/null
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -0,0 +1,45 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLINFO_TOTAL_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo options"
+.SH NAME
+CURLINFO_TOTAL_TIME \- get total time of previous transfer
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
+.SH DESCRIPTION
+Pass a pointer to a double to receive the total time in seconds for the
+previous transfer, including name resolving, TCP connect etc. The double
+represents the time in seconds, including fractions.
+
+See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.4.1
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
diff --git a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
index 66ceab82..ab2d2f63 100644
--- a/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
index 203b6acc..3b4e81d6 100644
--- a/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
+++ b/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
index 759ce086..ee9bdca7 100644
--- a/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
index 7522d437..2e0352f9 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
index c2adb457..cac3c719 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
index 2783a7d8..835c2bd4 100644
--- a/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
+++ b/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
index c795c48e..4c79b1be 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
index e3ea4b1a..660afecd 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
index cf6e6e7b..8c5f5d41 100644
--- a/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
+++ b/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
new file mode 100644
index 00000000..ca9fe8a8
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHDATA.3
@@ -0,0 +1,49 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHDATA 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHDATA \- pointer to pass to push callback
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
+.fi
+.SH DESCRIPTION
+Set \fIpointer\fP to pass as the last argument to the
+\fICURLMOPT_PUSHFUNCTION(3)\fP callback. The pointer will not be touched or
+used by libcurl itself, only passed on to the callback function.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP(S)
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHFUNCTION "(3), " CURLMOPT_PIPELINING "(3), "
+.BR CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
new file mode 100644
index 00000000..9fe02f8d
--- /dev/null
+++ b/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3
@@ -0,0 +1,133 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLMOPT_PUSHFUNCTION 3 "1 Jun 2015" "libcurl 7.44.0" "curl_multi_setopt options"
+.SH NAME
+CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
+char *curl_pushheader_byname(struct curl_pushheaders *h, const char *name);
+
+int curl_push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp);
+
+CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
+ curl_push_callback func);
+.fi
+.SH DESCRIPTION
+This callback gets called when a new HTTP/2 stream is being pushed by the
+server (using the PUSH_PROMISE frame). If no push callback is set, all offered
+pushes will be denied automatically.
+.SH CALLBACK DESCRIPTION
+The callback gets its arguments like this:
+
+\fIparent\fP is the handle of the stream on which this push arrives. The new
+handle has been duphandle()d from the parent, meaning that it has gotten all
+its options inherited. It is then up to the application to alter any options
+if desired.
+
+\fIeasy\fP is a newly created handle that represents this upcoming transfer.
+
+\fInum_headers\fP is the number of name+value pairs that was received and can
+be accessed
+
+\fIheaders\fP is a handle used to access push headers using the accessor
+functions described below. This only accesses and provides the PUSH_PROMISE
+headers, the normal response headers will be provided in the header callback
+as usual.
+
+\fIuserp\fP is the pointer set with \fICURLMOPT_PUSHDATA(3)\fP
+
+If the callback returns CURL_PUSH_OK, the 'easy' handle will be added to the
+multi handle, the callback must not do that by itself.
+
+The callback can access PUSH_PROMISE headers with two accessor
+functions. These functions can only be used from within this callback and they
+can only access the PUSH_PROMISE headers. The normal response headers will be
+passed to the header callback for pushed streams just as for normal streams.
+.IP curl_pushheader_bynum
+Returns the header at index 'num' (or NULL). The returned pointer points to a
+"name:value" string that will be freed when this callback returns.
+.IP curl_pushheader_byname
+Returns the value for the given header name (or NULL). This is a shortcut so
+that the application doesn't have to loop through all headers to find the one
+it is interested in. The data pointed will be freed when this callback
+returns. If more than one header field use the same name, this returns only
+the first one.
+.SH CALLBACK RETURN VALUE
+.IP "CURL_PUSH_OK (0)"
+The application has accepted the stream and it can now start receiving data,
+the ownership of the CURL handle has been taken over by the application.
+.IP "CURL_PUSH_DENY (1)"
+The callback denies the stream and no data for this will reach the
+application, the easy handle will be destroyed by libcurl.
+.IP *
+All other return codes are reserved for future use.
+.SH DEFAULT
+NULL, no callback
+.SH PROTOCOLS
+HTTP(S) (HTTP/2 only)
+.SH EXAMPLE
+.nf
+/* only allow pushes for file names starting with "push-" */
+int push_callback(CURL *parent,
+ CURL *easy,
+ size_t num_headers,
+ struct curl_pushheaders *headers,
+ void *userp)
+{
+ char *headp;
+ int *transfers = (int *)userp;
+ FILE *out;
+ headp = curl_pushheader_byname(headers, ":path");
+ if(headp && !strncmp(headp, "/push-", 6)) {
+ fprintf(stderr, "The PATH is %s\\n", headp);
+
+ /* save the push here */
+ out = fopen("pushed-stream", "wb");
+
+ /* write to this file */
+ curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
+
+ (*transfers)++; /* one more */
+
+ return CURL_PUSH_OK;
+ }
+ return CURL_PUSH_DENY;
+}
+
+curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
+curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
+.fi
+.SH AVAILABILITY
+Added in 7.44.0
+.SH RETURN VALUE
+Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLMOPT_PUSHDATA "(3), " CURLMOPT_PIPELINING "(3), " CURLOPT_PIPEWAIT "(3), "
+.BR RFC 7540
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
index bf7e6a75..b9cdc834 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
index d64fe112..113021e7 100644
--- a/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -20,7 +20,7 @@
.\" *
.\" **************************************************************************
.\"
-.TH CURLMOPT_SOCKETFUNCTION 3 "3 Nov 2014" "libcurl 7.39.0" "curl_multi_setopt options"
+.TH CURLMOPT_SOCKETFUNCTION 3 "3 Nov 2016" "libcurl 7.39.0" "curl_multi_setopt options"
.SH NAME
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
.SH SYNOPSIS
@@ -29,7 +29,7 @@ CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
int socket_callback(CURL *easy, /* easy handle */
curl_socket_t s, /* socket */
- int what, /* see above */
+ int what, /* describes the socket */
void *userp, /* private callback pointer */
void *socketp); /* private socket pointer */
@@ -46,6 +46,18 @@ If the given callback pointer is NULL, no callback will be called. Set the
callback's \fBuserp\fP argument with \fICURLMOPT_SOCKETDATA(3)\fP. See
\fIcurl_multi_socket_action(3)\fP for more details on how the callback is used
and should work.
+
+The \fBwhat\fP parameter informs the callback on the status of the given
+socket. It can hold one of these values:
+.IP CURL_POLL_IN
+Wait for incoming data. For the socket to become readable.
+.IP CURL_POLL_OUT
+Wait for outgoing data. For the socket to become writable.
+.IP CURL_POLL_INOUT
+Wait for incoming abd outgoing data. For the socket to become readable or
+writable.
+.IP CURL_POLL_REMOVE
+The specified socket/file descriptor is no longer used by libcurl.
.SH DEFAULT
NULL (no callback)
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
index 41627da1..9d2b66f9 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
index f509b453..7fcb7a51 100644
--- a/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
+++ b/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
index a51c86a8..70325fd9 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -31,11 +31,21 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
Pass a long telling libcurl the maximum number of milliseconds to wait for a
server to connect back to libcurl when an active FTP connection is used.
.SH DEFAULT
-If no timeout is set, the internal default of 60000 (one minute) will be used.
+60000 milliseconds
.SH PROTOCOLS
FTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/path/file");
+
+ /* wait no more than 5 seconds for FTP server responses */
+ curl_easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, 5000L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Added in 7.24.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
index 376799a2..c3126313 100644
--- a/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -32,27 +32,49 @@ Pass a char * argument specifying what encoding you'd like.
Sets the contents of the Accept-Encoding: header sent in a HTTP request, and
enables decoding of a response when a Content-Encoding: header is received.
-Three encodings are supported: \fIidentity\fP, which does nothing,
+Three encodings are supported: \fIidentity\fP, meaning non-compressed,
\fIdeflate\fP which requests the server to compress its response using the
zlib algorithm, and \fIgzip\fP which requests the gzip algorithm.
If a zero-length string is set like "", then an Accept-Encoding: header
containing all built-in supported encodings is sent.
+Set this option to NULL to explicitly disable it, which makes libcurl not send
+an Accept-Encoding: header and not decompress contents automatically.
+
You can also opt to just include the Accept-Encoding: header in your request
with \fICURLOPT_HTTPHEADER(3)\fP but then there will be no automatic
decompressing when receiving data.
This is a request, not an order; the server may or may not do it. This option
must be set (to any non-NULL value) or else any unsolicited encoding done by
-the server is ignored. See the special file lib/README.encoding for further
-details.
+the server is ignored.
+
+Servers might respond with Content-Encoding even without getting a
+Accept-Encoding: in the request. Servers might respond with a different
+Content-Encoding than what was asked for in the request.
+
+The Content-Length: servers send for a compressed response is supposed to
+indicate the length of the compressed content so when auto decoding is enabled
+it may not match the sum of bytes reported by the write callbacks (although,
+sending the length of the non-compressed content is a common server mistake).
.SH DEFAULT
NULL
.SH PROTOCOLS
HTTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable all supported built-in compressions */
+ curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
This option was called CURLOPT_ENCODING before 7.21.6
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
index 510e3b37..f323279b 100644
--- a/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
+++ b/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_APPEND.3 b/docs/libcurl/opts/CURLOPT_APPEND.3
index 03522966..c22acf79 100644
--- a/docs/libcurl/opts/CURLOPT_APPEND.3
+++ b/docs/libcurl/opts/CURLOPT_APPEND.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -28,17 +28,28 @@ CURLOPT_APPEND \- enable appending to the remote file
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
.SH DESCRIPTION
-A parameter set to 1 tells the library to append to the remote file instead of
-overwrite it. This is only useful when uploading to an FTP site.
+A long parameter set to 1 tells the library to append to the remote file
+instead of overwrite it. This is only useful when uploading to an FTP site.
.SH DEFAULT
-0
+0 (disabled)
.SH PROTOCOLS
FTP
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+
+ curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile");
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ curl_easy_setopt(curl, CURLOPT_APPEND, 1L);
+
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
This option was known as CURLOPT_FTPAPPEND up to 7.16.4
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_DIRLISTONLY "(3), " CURLOPT_RESUME_FROM "(3), "
+.BR CURLOPT_UPLOAD "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
index f8d5668b..e6a3a085 100644
--- a/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
+++ b/docs/libcurl/opts/CURLOPT_AUTOREFERER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
index 9e31ae92..113118e7 100644
--- a/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -47,4 +47,4 @@ Added in 7.10
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_MAX_RECV_SPEED "(3), " CURLOPT_WRITEFUNCTION "(3), "
+.BR CURLOPT_MAX_RECV_SPEED_LARGE "(3), " CURLOPT_WRITEFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CAINFO.3 b/docs/libcurl/opts/CURLOPT_CAINFO.3
index 85c9ba30..a05f5c0c 100644
--- a/docs/libcurl/opts/CURLOPT_CAINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CAINFO.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -43,12 +43,12 @@ If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module
.SH DEFAULT
Built-in system specific
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
For SSL engines that don't support certificate files the CURLOPT_CAINFO option
-is ignored. Refer to http://curl.haxx.se/docs/ssl-compared.html
+is ignored. Refer to https://curl.haxx.se/docs/ssl-compared.html
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_CAPATH.3 b/docs/libcurl/opts/CURLOPT_CAPATH.3
index 6695f9f3..0369f891 100644
--- a/docs/libcurl/opts/CURLOPT_CAPATH.3
+++ b/docs/libcurl/opts/CURLOPT_CAPATH.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -39,7 +39,7 @@ to some limitation in openssl.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_CERTINFO.3 b/docs/libcurl/opts/CURLOPT_CERTINFO.3
index a508b867..e836e407 100644
--- a/docs/libcurl/opts/CURLOPT_CERTINFO.3
+++ b/docs/libcurl/opts/CURLOPT_CERTINFO.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -30,9 +30,9 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CERTINFO, long certinfo);
.SH DESCRIPTION
Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
this enabled, libcurl will extract lots of information and data about the
-certificates in the certificate chain used in the SSL connection. This data may
-then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and its
-option \fICURLINFO_CERTINFO\fP.
+certificates in the certificate chain used in the SSL connection. This data
+may then be retrieved after a transfer using \fIcurl_easy_getinfo(3)\fP and
+its option \fICURLINFO_CERTINFO(3)\fP.
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
index 4dd79077..d31412d2 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
index 4d0ff3da..1ceb2cea 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -29,8 +29,8 @@ CURLOPT_CHUNK_DATA \- custom pointer to the FTP chunk callbacks
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
.SH DESCRIPTION
Pass a \fIpointer\fP that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_CHUNK_BGN_FUNCTION(3)\fP and
-\fICURL_CHUNK_END_FUNCTION(3)\fP.
+argument to the \fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP and
+\fICURLOPT_CHUNK_END_FUNCTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
index 64f829ce..d2b6c55a 100644
--- a/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
index b8af3531..1d6ca06c 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
index 2594b16d..f4e8bd99 100644
--- a/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
index 7f28e635..f1869486 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
index d81118e5..7a24a8b9 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -47,7 +47,7 @@ if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* complete connection within 10000 milliseconds */
- curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10000L);
+ curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT_MS, 10000L);
curl_easy_perform(curl);
}
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
index afb3cfdc..61289e8d 100644
--- a/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ the required proxy authentication and connection setup, but no data transfer,
and then return.
The option can be used to simply test a connection to a server, but is more
-useful when used with the \fICURLINFO_LASTSOCKET\fP option to
+useful when used with the \fICURLINFO_ACTIVESOCKET(3)\fP option to
\fIcurl_easy_getinfo(3)\fP as the library can set up the connection and then
the application can obtain the most recently used socket for special data
transfers.
diff --git a/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
new file mode 100644
index 00000000..30250214
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_CONNECT_TO.3
@@ -0,0 +1,111 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" *
+.\" * This software is licensed as described in the file COPYING, which
+.\" * you should have received as part of this distribution. The terms
+.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_CONNECT_TO 3 "10 April 2016" "libcurl 7.49.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_CONNECT_TO \- Connect to a specific host and port instead of the URL's host and port
+.SH SYNOPSIS
+.nf
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CONNECT_TO,
+ struct curl_slist *connect_to);
+.fi
+.SH DESCRIPTION
+Pass a pointer to a linked list of strings with "connect to" information to
+use for establishing network connections with this handle. The linked list
+should be a fully valid list of \fBstruct curl_slist\fP structs properly
+filled in. Use \fIcurl_slist_append(3)\fP to create the list and
+\fIcurl_slist_free_all(3)\fP to clean up an entire list.
+
+Each single string should be written using the format
+HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT where HOST is the host of the
+request, PORT is the port of the request, CONNECT-TO-HOST is the host name to
+connect to, and CONNECT-TO-PORT is the port to connect to.
+
+The first string that matches the request's host and port is used.
+
+Dotted numerical IP addresses are supported for HOST and CONNECT-TO-HOST.
+A numerical IPv6 address must be written within [brackets].
+
+Any of the four values may be empty. When the HOST or PORT is empty, the host
+or port will always match (the request's host or port is ignored).
+When CONNECT-TO-HOST or CONNECT-TO-PORT is empty, the "connect to" feature
+will be disabled for the host or port, and the request's host or port will be
+used to establish the network connection.
+
+This option is suitable to direct the request at a specific server, e.g. at a
+specific cluster node in a cluster of servers.
+
+The "connect to" host and port are only used to establish the network
+connection. They do NOT affect the host and port that are used for TLS/SSL
+(e.g. SNI, certificate verification) or for the application protocols.
+
+In contrast to \fICURLOPT_RESOLVE(3)\fP, the option
+\fICURLOPT_CONNECT_TO(3)\fP does not pre-populate the DNS cache and therefore
+it does not affect future transfers of other easy handles that have been added
+to the same multi handle.
+
+The "connect to" host and port are ignored if they are equal to the host and
+the port in the request URL, because connecting to the host and the port in
+the request URL is the default behavior.
+
+If an HTTP proxy is used for a request having a special "connect to" host or
+port, and the "connect to" host or port differs from the requests's host and
+port, the HTTP proxy is automatically switched to tunnel mode for this
+specific request. This is necessary because it is not possible to connect to a
+specific host or port in normal (non-tunnel) mode.
+
+When this option is passed to \fIcurl_easy_setopt(3)\fP, libcurl will not copy
+the entire list so you \fBmust\fP keep it around until you no longer use this
+\fIhandle\fP for a transfer before you call \fIcurl_slist_free_all(3)\fP on
+the list.
+
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl;
+struct curl_slist *connect_to = NULL;
+connect_to = curl_slist_append(NULL, "example.com::server1.example.com:");
+
+curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_CONNECT_TO, connect_to);
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ curl_easy_perform(curl);
+
+ /* always cleanup */
+ curl_easy_cleanup(curl);
+}
+
+curl_slist_free_all(connect_to);
+.fi
+.SH AVAILABILITY
+Added in 7.49.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_URL "(3), " CURLOPT_RESOLVE "(3), " CURLOPT_FOLLOWLOCATION "(3), " CURLOPT_HTTPPROXYTUNNEL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
index ebc4d77e..1ff300e2 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
index 682e1c5c..487492ce 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
index e8817f86..a1d6a1aa 100644
--- a/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -79,4 +79,4 @@ Available only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_TO_UTF8_FUNCTION "(3), "
+.BR CURLOPT_CONV_FROM_NETWORK_FUNCTION "(3), " CURLOPT_CONV_FROM_UTF8_FUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIE.3 b/docs/libcurl/opts/CURLOPT_COOKIE.3
index a390135f..32c2fc29 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
index a4c3b02b..00816b15 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEFILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -30,8 +30,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COOKIEFILE, char *filename);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It should point to
the file name of your file holding cookie data to read. The cookie data can be
-in either the old Netscape / Mozilla cookie data format or just regular
-HTTP-style headers dumped to a file.
+in either the old Netscape / Mozilla cookie data format or just regular HTTP
+headers (Set-Cookie style) dumped to a file.
It also enables the cookie engine, making libcurl parse and send cookies on
subsequent requests with this handle.
@@ -43,6 +43,14 @@ cookies.
This option only \fBreads\fP cookies. To make libcurl write cookies to file,
see \fICURLOPT_COOKIEJAR(3)\fP.
+Exercise caution if you are using this option and multiple transfers may occur.
+If you 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 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 you use this option multiple times, you just add more files to read.
Subsequent files will add more cookies.
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
index 936d4d8a..79a37230 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIEJAR.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -43,6 +43,9 @@ If the cookie jar file can't be created or written to (when the
error for this. Using \fICURLOPT_VERBOSE(3)\fP or
\fICURLOPT_DEBUGFUNCTION(3)\fP will get a warning to display, 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.
.SH DEFAULT
NULL
.SH PROTOCOLS
@@ -55,4 +58,5 @@ Along with HTTP
Returns CURLE_OK if HTTP is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), " CURLOPT_COOKIELIST "(3), "
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLOPT_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIELIST.3 b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
index 937c79db..7de4da88 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIELIST.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIELIST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,16 +36,15 @@ Such a cookie can be either a single line in Netscape / Mozilla format or just
regular HTTP-style header (Set-Cookie: ...) format. This will also enable the
cookie engine. This adds that single cookie to the internal cookie store.
-If you use the Set-Cookie format and don't specify a domain then the cookie
-is sent for any domain and will not be modified. If a server sets a cookie of
-the same name (or maybe you've imported one) then both will be sent on a future
-transfer to that server, likely not what you intended. Either set a domain in
-Set-Cookie (doing that will include sub domains) or use the Netscape format as
+Exercise caution if you are using this option and multiple transfers may occur.
+If you 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 a server sets a cookie of the same name (or maybe
+you've imported one) 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 as
shown in EXAMPLE.
-Starting in 7.43.0 the aforementioned any-domain cookies will not appear in the
-lists exported by \fICURLINFO_COOKIELIST(3)\fP and \fICURLOPT_COOKIEJAR(3)\fP.
-
Additionally, there are commands available that perform actions if you pass in
these exact strings:
.IP ALL
@@ -101,7 +100,7 @@ were skipped on import are not exported.
*/
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt"); /* export */
-res = curl_easy_perform(curl); /* cookies imported from cookies.txt */
+curl_easy_perform(curl); /* cookies imported from cookies.txt */
curl_easy_cleanup(curl); /* cookies exported to cookies.txt */
.fi
@@ -117,4 +116,5 @@ RELOAD was added in 7.39.0
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLOPT_COOKIEFILE "(3), " CURLOPT_COOKIEJAR "(3), " CURLOPT_COOKIE "(3), "
+.BR CURLINFO_COOKIELIST "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
index 0d560763..ecc3757e 100644
--- a/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
+++ b/docs/libcurl/opts/CURLOPT_COOKIESESSION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
index d35aebd6..001d6fe4 100644
--- a/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CRLF.3 b/docs/libcurl/opts/CURLOPT_CRLF.3
index 32d8b79c..b13a06e6 100644
--- a/docs/libcurl/opts/CURLOPT_CRLF.3
+++ b/docs/libcurl/opts/CURLOPT_CRLF.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CRLFILE.3 b/docs/libcurl/opts/CURLOPT_CRLFILE.3
index adc0e99d..6bb035e7 100644
--- a/docs/libcurl/opts/CURLOPT_CRLFILE.3
+++ b/docs/libcurl/opts/CURLOPT_CRLFILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
index fd33118a..553d4085 100644
--- a/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -30,7 +30,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CUSTOMREQUEST, char *request);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter.
-When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST(3)\fP
+When you change the request method by setting \fICURLOPT_CUSTOMREQUEST(3)\fP
to something, you don't actually change how libcurl behaves or acts in regards
to the particular request method, it will only change the actual string sent
in the request.
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
index ebdb0c55..27b9cbb3 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -36,7 +36,7 @@ NULL
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/debug.html
+https://curl.haxx.se/libcurl/c/debug.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
index 6c4721b7..bf07499a 100644
--- a/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -88,7 +88,7 @@ void dump(const char *text,
size_t c;
unsigned int width=0x10;
- fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\n",
+ fprintf(stream, "%s, %10.10ld bytes (0x%8.8lx)\\n",
text, (long)size, (long)size);
for(i=0; i<size; i+= width) {
@@ -103,10 +103,12 @@ void dump(const char *text,
}
/* show data on the right */
- for(c = 0; (c < width) && (i+c < size); c++)
- fputc(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.', stream);
+ for(c = 0; (c < width) && (i+c < size); c++) {
+ char x = (ptr[i+c] >= 0x20 && ptr[i+c] < 0x80) ? ptr[i+c] : '.';
+ fputc(x, stream);
+ }
- fputc('\n', stream); /* newline */
+ fputc('\\n', stream); /* newline */
}
}
@@ -167,7 +169,7 @@ int main(void)
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
- fprintf(stderr, "curl_easy_perform() failed: %s\n",
+ fprintf(stderr, "curl_easy_perform() failed: %s\\n",
curl_easy_strerror(res));
/* always cleanup */
diff --git a/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
new file mode 100644
index 00000000..f7f890ca
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3
@@ -0,0 +1,79 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_DEFAULT_PROTOCOL 3 "18 Aug 2015" "libcurl 7.45.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_DEFAULT_PROTOCOL \- default protocol to use if the URL is missing a
+scheme name
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_DEFAULT_PROTOCOL, char
+*protocol);
+.SH DESCRIPTION
+This option tells libcurl to use \fIprotocol\fP if the URL is missing a scheme
+name.
+
+Use one of these protocol (scheme) names:
+
+dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3,
+pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
+
+An unknown or unsupported protocol causes error
+\fICURLE_UNSUPPORTED_PROTOCOL\fP when libcurl parses a schemeless URL. Parsing
+happens when \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP is
+called. The protocols supported by libcurl will vary depending on how it was
+built. Use \fIcurl_version_info(3)\fP if you need a list of protocol names
+supported by the build of libcurl that you are using.
+
+This option does not change the default proxy protocol (http).
+
+Without this option libcurl would make a guess based on the host, see
+\fICURLOPT_URL(3)\fP for details.
+.SH DEFAULT
+NULL (make a guess based on the host)
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+curl = curl_easy_init();
+if(curl) {
+ /* set a URL without a scheme */
+ curl_easy_setopt(curl, CURLOPT_URL, "example.com");
+
+ /* set the default protocol (scheme) for schemeless URLs */
+ curl_easy_setopt(curl, CURLOPT_DEFAULT_PROTOCOL, "https");
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.45.0
+.SH RETURN VALUE
+CURLE_OK if the option is supported.
+
+CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+
+CURLE_UNKNOWN_OPTION if the option is not supported.
+.SH "SEE ALSO"
+.BR CURLOPT_URL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
index a81f9076..07b8ac38 100644
--- a/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
+++ b/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
index 93327806..06074101 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
index c33d7917..f7643980 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
index f5db645f..ef9f1e26 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
index 56865bb5..7d82bdf8 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
index 9f517888..14c9f9bd 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
index db53c0b9..87f686a2 100644
--- a/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
index 2e72ecc7..ad91c3f0 100644
--- a/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
+++ b/docs/libcurl/opts/CURLOPT_EGDSOCKET.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ socket. It will be used to seed the random engine for SSL.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
index 577202cf..b64a2a39 100644
--- a/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
+++ b/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -51,15 +51,33 @@ All
.nf
curl = curl_easy_init();
if(curl) {
- char error[CURL_ERROR_SIZE]
+ CURLcode res;
+ char errbuf[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* provide a buffer to store errors in */
- curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
+ curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
- /* Perform the request */
- curl_easy_perform(curl);
+ /* set the error buffer as empty before performing a request */
+ errbuf[0] = 0;
+
+ /* perform the request */
+ res = curl_easy_perform(curl);
+
+ /* if the request did not complete correctly, show the error
+ information. if no detailed error information was written to errbuf
+ show the more generic information from curl_easy_strerror instead.
+ */
+ if(res != CURLE_OK) {
+ size_t len = strlen(errbuf);
+ fprintf(stderr, "\\nlibcurl: (%d) ", res);
+ if(len)
+ fprintf(stderr, "%s%s", errbuf,
+ ((errbuf[len - 1] != '\\n') ? "\\n" : ""));
+ else
+ fprintf(stderr, "%s\\n", curl_easy_strerror(res));
+ }
}
.fi
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
index 81f4571d..10f3c062 100644
--- a/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FAILONERROR.3 b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
index a8267fd3..79474cef 100644
--- a/docs/libcurl/opts/CURLOPT_FAILONERROR.3
+++ b/docs/libcurl/opts/CURLOPT_FAILONERROR.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -39,6 +39,9 @@ response codes will slip through, especially when authentication is involved
You might get some amounts of headers transferred before this situation is
detected, like when a "100-continue" is received as a response to a POST/PUT
and a 401 or 407 is received immediately afterwards.
+
+When this option is used and an error is detected, it will cause the
+connection to get closed.
.SH DEFAULT
0, do not fail on error
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_FILETIME.3 b/docs/libcurl/opts/CURLOPT_FILETIME.3
index 7c57affe..99ba7f7e 100644
--- a/docs/libcurl/opts/CURLOPT_FILETIME.3
+++ b/docs/libcurl/opts/CURLOPT_FILETIME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -31,8 +31,8 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FILETIME, long gettime);
Pass a long. If it is 1, libcurl will attempt to get the modification time of
the remote document in this operation. This requires that the remote server
sends the time or replies to a time querying command. The
-\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
-can be used after a transfer to extract the received time (if any).
+\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME(3)\fP
+argument can be used after a transfer to extract the received time (if any).
.SH DEFAULT
0
.SH PROTOCOLS
@@ -40,7 +40,7 @@ HTTP, FTP, SFTP, FILE
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Always
+Always, for SFTP since 7.49.0
.SH RETURN VALUE
Returns CURLE_OK
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
index a0466fe5..236c19df 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -31,7 +31,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_DATA,
void *pointer);
.SH DESCRIPTION
Pass a pointer that will be untouched by libcurl and passed as the ptr
-argument to the \fICURL_FNMATCH_FUNCTION(3)\fP.
+argument to the \fICURLOPT_FNMATCH_FUNCTION(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
index fc119a9c..04967b89 100644
--- a/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -37,7 +37,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FNMATCH_FUNCTION,
Pass a pointer to your callback function, which should match the prototype
shown above.
-This callback s used for wildcard matching.
+This callback is used for wildcard matching.
Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string,
\fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an
diff --git a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
index 3a32caef..094ee05d 100644
--- a/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
+++ b/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -28,22 +28,31 @@ CURLOPT_FOLLOWLOCATION \- follow HTTP 3xx redirects
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_FOLLOWLOCATION, long enable);
.SH DESCRIPTION
-A parameter set to 1 tells the library to follow any Location: header that the
-server sends as part of a HTTP header in a 3xx response.
+A long parameter set to 1 tells the library to follow any Location: header
+that the server sends as part of a HTTP header in a 3xx response. The
+Location: header can specify a relative or an absolute URL to follow.
-This means that libcurl will re-send the same request on the new location and
-follow new Location: headers all the way until no more such headers are
-returned. \fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of
-redirects libcurl will follow.
+libcurl will issue another request for the new URL and follow new Location:
+headers all the way until no more such headers are returned.
+\fICURLOPT_MAXREDIRS(3)\fP can be used to limit the number of redirects
+libcurl will follow.
-libcurl can limit to what protocols it will automatically follow. The accepted
-protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP and it excludes the
-FILE protocol by default.
+libcurl limits what protocols it automatically follows to. The accepted
+protocols are set with \fICURLOPT_REDIR_PROTOCOLS(3)\fP. By default libcurl
+will allow all protocols on redirect except those disabled for security
+reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0 SMB and SMBS
+are also disabled.
+
+When following a Location:, the 3xx response code that redirected it also
+dictates which request method it will use in the subsequent request: For 301,
+302 and 303 responses libcurl will switch method to GET unless
+\fICURLOPT_POSTREDIR(3)\fP instructs libcurl otherwise. All other 3xx codes
+will make libcurl send the same method again.
For users who think the existing location following is too naive, too simple
or just lacks features, it is very easy to instead implement your own redirect
follow logic with the use of \fIcurl_easy_getinfo(3)\fP's
-\fICURLINFO_REDIRECT_URL\fP option instead of using
+\fICURLINFO_REDIRECT_URL(3)\fP option instead of using
\fICURLOPT_FOLLOWLOCATION(3)\fP.
.SH DEFAULT
0, disabled
@@ -68,3 +77,4 @@ Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_REDIR_PROTOCOLS "(3), " CURLOPT_PROTOCOLS "(3), "
.BR CURLOPT_POSTREDIR "(3), "
+.BR CURLINFO_REDIRECT_URL "(3), ", CURLINFO_REDIRECT_COUNT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
index c588ca53..b8464dfc 100644
--- a/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
+++ b/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
index 1caaf61e..ce6e6fe7 100644
--- a/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
+++ b/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTPPORT.3 b/docs/libcurl/opts/CURLOPT_FTPPORT.3
index fd87bb23..8e300bc2 100644
--- a/docs/libcurl/opts/CURLOPT_FTPPORT.3
+++ b/docs/libcurl/opts/CURLOPT_FTPPORT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
index bfbea9c2..5437b0c7 100644
--- a/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
index 3c342475..0d768d77 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
index b51e4dd1..57581090 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
index a52863e8..d28a646e 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
index 62396b97..280e8f1d 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -59,4 +59,4 @@ Added in 7.15.1
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_FTPLISTONLY "(3), " CURLOPT_FTP_SKIP_PASV_IP "(3), "
+.BR CURLOPT_DIRLISTONLY "(3), " CURLOPT_FTP_SKIP_PASV_IP "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
index 18dbc2fe..45ec304c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_RESPONSE_TIMEOUT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
index b1803fd7..b60c3b10 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
index 5391285e..47371147 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
index d26af0c4..181f5a1c 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
index 172985a9..af7a45e9 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
index b20f3fb8..10f713bb 100644
--- a/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
+++ b/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
index 13f3cecb..65ea6ec4 100644
--- a/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
+++ b/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HEADER.3 b/docs/libcurl/opts/CURLOPT_HEADER.3
index f5a4be8d..b650163d 100644
--- a/docs/libcurl/opts/CURLOPT_HEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HEADER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HEADERDATA.3 b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
index c0a45f26..c865c860 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERDATA.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
index f8ed0ab8..b8596d8f 100644
--- a/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -85,7 +85,7 @@ static size_t header_callback(char *buffer, size_t size,
size_t nitems, void *userdata)
{
/* received header is nitems * size long in 'buffer' NOT ZERO TERMINATED */
- /* 'userdata' is set with CURLOPT_WRITEDATA */
+ /* 'userdata' is set with CURLOPT_HEADERDATA */
return nitems * size;
}
diff --git a/docs/libcurl/opts/CURLOPT_HEADEROPT.3 b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
index 7776b921..7053a3af 100644
--- a/docs/libcurl/opts/CURLOPT_HEADEROPT.3
+++ b/docs/libcurl/opts/CURLOPT_HEADEROPT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
index b87db464..17f1dd32 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
index 35d75aa5..fc7a3a41 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPAUTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTPGET.3 b/docs/libcurl/opts/CURLOPT_HTTPGET.3
index c14c3878..01de1f3c 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPGET.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPGET.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
index cd504314..c5ccb1a5 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPHEADER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPOST.3 b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
index 0f35b632..974f9f37 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPOST.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPOST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -34,8 +34,8 @@ Tells libcurl you want a multipart/formdata HTTP POST to be made and you
instruct what data to pass on to the server in the \fIformpost\fP argument.
Pass a pointer to a linked list of curl_httppost structs as parameter. The
easiest way to create such a list, is to use \fIcurl_formadd(3)\fP as
-documented. The data in this list must remain intact until you close this curl
-handle again with \fIcurl_easy_cleanup(3)\fP.
+documented. The data in this list must remain intact as long as the curl
+transfer is alive and is using it.
Using POST with HTTP 1.1 implies the use of a "Expect: 100-continue" header.
You can disable this header with \fICURLOPT_HTTPHEADER(3)\fP.
@@ -76,3 +76,4 @@ As long as HTTP is enabled
Returns CURLE_OK if HTTP is enabled, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_POSTFIELDS "(3), " CURLOPT_POST "(3), "
+.BR curl_formadd "(3), " curl_formfree "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
index f861afbd..6b48a052 100644
--- a/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
+++ b/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
index 65472ec6..9338b249 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
index 26662db3..ddd59d29 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
index c85d1448..96dd4b67 100644
--- a/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
+++ b/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -28,11 +28,15 @@ CURLOPT_HTTP_VERSION \- specify HTTP protocol version to use
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_HTTP_VERSION, long version);
.SH DESCRIPTION
-Pass \fIversion\fP a long, set to one of the values described below. They
-force libcurl to use the specific HTTP versions. This is not sensible to do
-unless you have a good reason. You have to set this option if you want to use
+Pass \fIversion\fP a long, set to one of the values described below. They ask
+libcurl to use the specific HTTP versions. This is not sensible to do unless
+you have a good reason. You have to set this option if you want to use
libcurl's HTTP/2 support.
+Note that the HTTP version is just a request. libcurl will still prioritize to
+re-use an existing connection so it might then re-use a connection using a
+HTTP version you haven't asked for.
+
.IP CURL_HTTP_VERSION_NONE
We don't care about what version the library uses. libcurl will use whatever
it thinks fit.
@@ -41,8 +45,20 @@ Enforce HTTP 1.0 requests.
.IP CURL_HTTP_VERSION_1_1
Enforce HTTP 1.1 requests.
.IP CURL_HTTP_VERSION_2_0
-Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.x if HTTP 2 can't be
+Attempt HTTP 2 requests. libcurl will fall back to HTTP 1.1 if HTTP 2 can't be
negotiated with the server. (Added in 7.33.0)
+
+The alias \fICURL_HTTP_VERSION_2\fP was added in 7.43.0 to better reflect the
+actual protocol name.
+.IP CURL_HTTP_VERSION_2TLS
+Attempt HTTP 2 over TLS (HTTPS) only. libcurl will fall back to HTTP 1.1 if
+HTTP 2 can't be negotiated with the HTTPS server. For clear text HTTP servers,
+libcurl will use 1.1. (Added in 7.47.0)
+.IP CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE
+Issue non-TLS HTTP requests using HTTP/2 without HTTP/1.1 Upgrade. It requires
+prior knowledge that the server supports HTTP/2 straight away. HTTPS requests
+will still do HTTP/2 the standard way with negotiated protocol version in the
+TLS handshake. (Added in 7.49.0)
.SH DEFAULT
CURL_HTTP_VERSION_NONE
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
index 51fd6b08..413ee579 100644
--- a/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
+++ b/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -22,7 +22,7 @@
.\"
.TH CURLOPT_IGNORE_CONTENT_LENGTH 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_IGNORE_CONTENT_LENGTH \- ignore Content-Length in HTTP response
+CURLOPT_IGNORE_CONTENT_LENGTH \- ignore content length
.SH SYNOPSIS
.nf
#include <curl/curl.h>
@@ -30,12 +30,18 @@ CURLOPT_IGNORE_CONTENT_LENGTH \- ignore Content-Length in HTTP response
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_IGNORE_CONTENT_LENGTH,
long ignore);
.SH DESCRIPTION
-If \fIignore\fP is set to 1, ignore the Content-Length header in the HTTP
-response. This is useful for Apache 1.x (and similar servers) which will
+If \fIignore\fP is set to 1L, ignore the Content-Length header in the HTTP
+response and ignore asking for or relying on it for FTP transfers.
+
+This is useful for HTTP with Apache 1.x (and similar servers) which will
report incorrect content length for files over 2 gigabytes. If this option is
used, curl will not be able to accurately report progress, and will simply
stop the download when the server ends the connection.
+It is also useful with FTP when for example the file is growing while the
+transfer is in progress which otherwise will unconditionally cause libcurl to
+report error.
+
Only use this option if strictly necessary.
.SH DEFAULT
0
@@ -54,7 +60,7 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-Added in 7.14.1
+Added in 7.14.1. Support for FTP added in 7.46.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
index fd49e21a..088f45d0 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
index 114676d0..f866cd43 100644
--- a/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_INTERFACE.3 b/docs/libcurl/opts/CURLOPT_INTERFACE.3
index 0890eb6c..77db3723 100644
--- a/docs/libcurl/opts/CURLOPT_INTERFACE.3
+++ b/docs/libcurl/opts/CURLOPT_INTERFACE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
index 836dfac1..b47d21d9 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
index b965529d..95e6fe52 100644
--- a/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
index 456080cf..0ef96e2b 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
index ebfe8dfc..f2dd42eb 100644
--- a/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
index ad9827a4..817f34d5 100644
--- a/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_IPRESOLVE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
index 08afb29e..61198eac 100644
--- a/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
+++ b/docs/libcurl/opts/CURLOPT_ISSUERCERT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
index 0ed0c875..9b85b824 100644
--- a/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
+++ b/docs/libcurl/opts/CURLOPT_KEYPASSWD.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -35,7 +35,7 @@ phrase to load a certificate but you need one to load your private key.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
index 571eba3b..6ebd2f27 100644
--- a/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
+++ b/docs/libcurl/opts/CURLOPT_KRBLEVEL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -45,4 +45,4 @@ This option was known as CURLOPT_KRB4LEVEL up to 7.16.3
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
.SH "SEE ALSO"
-.BR CURLOPT_KRBLEVEL "(3), " CURLOPT_FTP_SSL "(3), "
+.BR CURLOPT_KRBLEVEL "(3), " CURLOPT_USE_SSL "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORT.3 b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
index 88ca1f87..e56f0129 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORT.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
index 3a7c701f..e54a1c87 100644
--- a/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
+++ b/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
index dde3c6ed..a9ca1928 100644
--- a/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -34,7 +34,7 @@ Pass a char * as parameter, which should be pointing to the zero terminated
For more information about the login options please see RFC2384, RFC5092 and
IETF draft draft-earhart-url-smtp-00.txt
-\fBCURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
+\fICURLOPT_LOGIN_OPTIONS(3)\fP can be used to set protocol specific login
options, such as the preferred authentication mechanism via "AUTH=NTLM" or
"AUTH=*", and should be used in conjunction with the \fICURLOPT_USERNAME(3)\fP
option.
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
index 893c1b14..890ea720 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
index 90b19f2a..ed3b8296 100644
--- a/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
+++ b/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
index 4591a01e..bd581f0d 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
index bf7160eb..0420d493 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_FROM.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
index 95665e77..01fa62ab 100644
--- a/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
+++ b/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
index 2a41b375..8e90a9d2 100644
--- a/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -44,7 +44,7 @@ get closed unnecessarily.
If you add this easy handle to a multi handle, this setting is not
acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
-\fICURLMOPT_MAXCONNECTS\fP option.
+\fICURLMOPT_MAXCONNECTS(3)\fP option.
.SH DEFAULT
5
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
index e0ce0660..5f5959a1 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
index b3130018..630c0b5a 100644
--- a/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
index 34608c39..ce625536 100644
--- a/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
+++ b/docs/libcurl/opts/CURLOPT_MAXREDIRS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
index e73ad22b..031f2cd3 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
index 4893b392..c2c6336f 100644
--- a/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NETRC.3 b/docs/libcurl/opts/CURLOPT_NETRC.3
index 9fb13b32..c453dd38 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
index 7291999e..d3ecc957 100644
--- a/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_NETRC_FILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
index 2d22595e..f195fabf 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
index eb51f462..2a41aba4 100644
--- a/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
+++ b/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NOBODY.3 b/docs/libcurl/opts/CURLOPT_NOBODY.3
index b303b95d..340b9f45 100644
--- a/docs/libcurl/opts/CURLOPT_NOBODY.3
+++ b/docs/libcurl/opts/CURLOPT_NOBODY.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
index ebdecb04..8194a5e0 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROGRESS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,6 +36,23 @@ Future versions of libcurl are likely to not have any built-in progress meter
at all.
.SH DEFAULT
1, meaning it normally runs without a progress meter.
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* enable progress meter */
+ curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
+.SH AVAILABILITY
+Always
.SH RETURN VALUE
Returns CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_NOPROXY.3 b/docs/libcurl/opts/CURLOPT_NOPROXY.3
index 7e2e7199..2998a30a 100644
--- a/docs/libcurl/opts/CURLOPT_NOPROXY.3
+++ b/docs/libcurl/opts/CURLOPT_NOPROXY.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
index 27fe1580..dac0710f 100644
--- a/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
+++ b/docs/libcurl/opts/CURLOPT_NOSIGNAL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
index a397c3e3..869b7f6c 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
index d5f461d0..314e0c4a 100644
--- a/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_PASSWORD.3
index b460658f..06ed9e19 100644
--- a/docs/libcurl/opts/CURLOPT_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PASSWORD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
index 490aca0d..9b0d3d55 100644
--- a/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
+++ b/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -28,12 +28,12 @@ CURLOPT_PATH_AS_IS \- do not handle dot dot sequences
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PATH_AS_IS, long leaveit);
.SH DESCRIPTION
-By setting the long \fIleavit\fP to 1, to explicitly tell libcurl to not alter
-the given path before passing it on to the server.
+Set the long \fIleaveit\fP to 1, to explicitly tell libcurl to not alter the
+given path before passing it on to the server.
-This tells libcurl to NOT squash sequences of "/../" or "/./" that may exist
-in the URL's path part and that is supposed to be removed according to RFC
-3986 section 5.2.4.
+This instructs libcurl to NOT squash sequences of "/../" or "/./" that may
+exist in the URL's path part and that is supposed to be removed according to
+RFC 3986 section 5.2.4.
Some server implementations are known to (erroneously) require the dot dot
sequences to remain in the path and some clients want to pass these on in
@@ -43,7 +43,7 @@ By default libcurl will merge such sequences before using the path.
.SH DEFAULT
0
.SH PROTOCOLS
-All
+All
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
@@ -61,3 +61,5 @@ Aded in 7.42.0
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
.BR CURLOPT_STDERR "(3), " CURLOPT_DEBUGFUNCTION "(3), "
+.BR CURLOPT_URL "(3), "
+
diff --git a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
index 94cad31f..4e673bd4 100644
--- a/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
+++ b/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -28,23 +28,30 @@ CURLOPT_PINNEDPUBLICKEY \- set pinned public key
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PINNEDPUBLICKEY, char *pinnedpubkey);
.SH DESCRIPTION
-Pass a pointer to a zero terminated string as parameter. The string should be
-the file name of your pinned public key. The format expected is "PEM" or "DER".
+Pass a pointer to a zero terminated string as parameter. The string can be the
+file name of your pinned public key. The file format expected is "PEM" or "DER".
+The string can also be 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
if it does not exactly match the public key provided to this option, curl will
abort the connection before sending or receiving any data.
+
+On mismatch, \fICURLE_SSL_PINNEDPUBKEYNOTMATCH\fP is returned.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "/etc/publickey.der");
+ /* OR
+ curl_easy_setopt(curl, CURLOPT_PINNEDPUBLICKEY, "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEgoChTociMee9wno=");
+ */
/* Perform the request */
curl_easy_perform(curl);
@@ -54,9 +61,28 @@ if(curl) {
If you do not have the server's public key file you can extract it from the
server's certificate.
.nf
-openssl x509 -in www.test.com.pem -pubkey -noout > www.test.com.pubkey.pem
+# retrieve the server's certificate if you don't already have it
+#
+# be sure to examine the certificate to see if it is what you expected
+#
+# Windows-specific:
+# - Use NUL instead of /dev/null.
+# - OpenSSL may wait for input instead of disconnecting. Hit enter.
+# - If you don't have sed, then just copy the certificate into a file:
+# Lines from -----BEGIN CERTIFICATE----- to -----END CERTIFICATE-----.
+#
+openssl s_client -servername www.example.com -connect www.example.com:443 < /dev/null | sed -n "/-----BEGIN/,/-----END/p" > www.example.com.pem
+
+# extract public key in pem format from certificate
+openssl x509 -in www.example.com.pem -pubkey -noout > www.example.com.pubkey.pem
+
+# convert public key from pem to der
+openssl asn1parse -noout -inform pem -in www.example.com.pubkey.pem -out www.example.com.pubkey.der
+
+# sha256 hash and base64 encode der to string for use
+openssl dgst -sha256 -binary www.example.com.pubkey.der | openssl base64
.fi
-The public key is output in PEM format and contains a header, base64 data and a
+The public key in PEM format contains a header, base64 data and a
footer:
.nf
-----BEGIN PUBLIC KEY-----
@@ -64,8 +90,16 @@ footer:
-----END PUBLIC KEY-----
.fi
.SH AVAILABILITY
-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.
+PEM/DER support:
+ 7.39.0: OpenSSL, GnuTLS and GSKit
+ 7.43.0: NSS and wolfSSL/CyaSSL
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+sha256 support:
+ 7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL/CyaSSL.
+ 7.47.0: mbedtls
+ 7.49.0: PolarSSL
+Other SSL backends not supported.
.SH RETURN VALUE
Returns CURLE_OK if TLS enabled, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
index 5f641959..6d0f14e7 100644
--- a/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
+++ b/docs/libcurl/opts/CURLOPT_PIPEWAIT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,10 +36,10 @@ libcurl will check for existing connections to re-use and pipeline on. If no
such connection exists it will immediately continue and create a fresh new
connection to use.
-By setting this option to 1 - and having \fICURLMOPT_PIPELINE\fP enabled for
-the multi handle this transfer is associated with - libcurl will instead wait
-for the connection to reveal if it is possible to pipeline/multiplex on before
-it continues. This enables libcurl to much better keep the number of
+By setting this option to 1 - and having \fICURLMOPT_PIPELINING(3)\fP enabled
+for the multi handle this transfer is associated with - libcurl will instead
+wait for the connection to reveal if it is possible to pipeline/multiplex on
+before it continues. This enables libcurl to much better keep the number of
connections to a minimum when using pipelining or multiplexing protocols.
The effect thus becomes that with this option set, libcurl prefers to wait and
diff --git a/docs/libcurl/opts/CURLOPT_PORT.3 b/docs/libcurl/opts/CURLOPT_PORT.3
index 5fd19c79..f47b243a 100644
--- a/docs/libcurl/opts/CURLOPT_PORT.3
+++ b/docs/libcurl/opts/CURLOPT_PORT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POST.3 b/docs/libcurl/opts/CURLOPT_POST.3
index cd6b6d44..7754c7dc 100644
--- a/docs/libcurl/opts/CURLOPT_POST.3
+++ b/docs/libcurl/opts/CURLOPT_POST.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
index 27e4510b..f9f9eadc 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
index 01668056..8db05c68 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
index 50fc3519..9d0c4017 100644
--- a/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
index 72692fd9..3283a1a4 100644
--- a/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_POSTQUOTE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_POSTREDIR.3 b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
index aa36bd0f..07aea6e6 100644
--- a/docs/libcurl/opts/CURLOPT_POSTREDIR.3
+++ b/docs/libcurl/opts/CURLOPT_POSTREDIR.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -32,13 +32,13 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_POSTREDIR,
.SH DESCRIPTION
Pass a bitmask to control how libcurl acts on redirects after POSTs that get a
301, 302 or 303 response back. A parameter with bit 0 set (value
-\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not
-convert POST requests into GET requests when following a 301 redirection.
-Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the
-request method after a 302 redirect whilst setting bit 2 (value
-\fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a
-303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that
-sets all three bits.
+\fBCURL_REDIR_POST_301\fP) tells the library to respect RFC 7231 (section
+6.4.2 to 6.4.4) and not convert POST requests into GET requests when following
+a 301 redirection. Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes
+libcurl maintain the request method after a 302 redirect whilst setting bit 2
+(value \fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method
+after a 303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience
+define that sets all three bits.
The non-RFC behaviour is ubiquitous in web browsers, so the library does the
conversion by default to maintain consistency. However, a server may require a
diff --git a/docs/libcurl/opts/CURLOPT_PREQUOTE.3 b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
index e4163e88..6b95265e 100644
--- a/docs/libcurl/opts/CURLOPT_PREQUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_PREQUOTE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PRIVATE.3 b/docs/libcurl/opts/CURLOPT_PRIVATE.3
index 9907f975..80f2c6b0 100644
--- a/docs/libcurl/opts/CURLOPT_PRIVATE.3
+++ b/docs/libcurl/opts/CURLOPT_PRIVATE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
index c4785dca..7dc70f12 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -35,7 +35,7 @@ The default value of this parameter is NULL.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
index d8e7a667..b077e3b6 100644
--- a/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -75,7 +75,7 @@ users.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
index 958eeeb9..4fecb81d 100644
--- a/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_PROTOCOLS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -60,6 +60,7 @@ CURLPROTO_RTSP
CURLPROTO_SCP
CURLPROTO_SFTP
CURLPROTO_SMB
+CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
diff --git a/docs/libcurl/opts/CURLOPT_PROXY.3 b/docs/libcurl/opts/CURLOPT_PROXY.3
index b419e51b..f6975bbd 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -29,8 +29,8 @@ CURLOPT_PROXY \- set proxy to use
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy);
.SH DESCRIPTION
Set the \fIproxy\fP to use for the upcoming request. The parameter should be a
-char * to a zero terminated string holding the host name or dotted IP
-address.
+char * to a zero terminated string holding the host name or dotted numerical
+IP address. A numerical IPv6 address must be written within [brackets].
To specify port number in this string, append :[port] to the end of the host
name. The proxy's port number may optionally be specified with the separate
@@ -61,8 +61,8 @@ option does however override any possibly set environment variables.
Setting the proxy string to "" (an empty string) will explicitly disable the
use of a proxy, even if there is an environment variable set for it.
-A proxy host string given in an environment variable can also include protocol
-scheme (http://) and embedded user + password.
+A proxy host string can also include protocol scheme (http://) and embedded
+user + password.
.SH DEFAULT
Default is NULL, meaning no proxy is used.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
index fe742c03..24dbca5a 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYAUTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
index bfa7a7a2..bfec6293 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYHEADER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
index 43536ca1..18272c34 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROXYPORT.3 b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
index d8a1bb1f..2380e09e 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYPORT.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYPORT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
index 2ce0cc0c..d2d92425 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_HTTP_1_0\fP
\fICURLPROXY_SOCKS4\fP, \fICURLPROXY_SOCKS5\fP, \fICURLPROXY_SOCKS4A\fP and
\fICURLPROXY_SOCKS5_HOSTNAME\fP. The HTTP type is default.
-If you set \fBCURLOPT_PROXYTYPE(3)\fP to \fICURLPROXY_HTTP_1_0\fP, it will
+If you set \fICURLOPT_PROXYTYPE(3)\fP to \fICURLPROXY_HTTP_1_0\fP, it will
only affect how libcurl speaks to a proxy when CONNECT is used. The HTTP
version used for "regular" HTTP requests is instead controlled with
\fICURLOPT_HTTP_VERSION(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
index c342ec4f..0d7a241f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXYUSERNAME,
Pass a char * as parameter, which should be pointing to the zero terminated
user name to use for the transfer.
-\fBCURLOPT_PROXYUSERNAME(3)\fP sets the user name to be used in protocol
+\fICURLOPT_PROXYUSERNAME(3)\fP sets the user name to be used in protocol
authentication with the proxy.
To specify the proxy password use the \fICURLOPT_PROXYPASSWORD(3)\fP.
diff --git a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
index bbf0da52..1b47b892 100644
--- a/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
index a6224fb7..a010382f 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -22,22 +22,23 @@
.\"
.TH CURLOPT_PROXY_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_PROXY_SERVICE_NAME \- proxy service name
+CURLOPT_PROXY_SERVICE_NAME \- proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROXY_SERVICE_NAME, char *name);
.SH DESCRIPTION
Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP". This option allows you to change it.
-..SH DEFAULT
+service. The default service name is "HTTP" for HTTP based proxies and "rcmd"
+for SOCKS5. This option allows you to change it.
+.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+All network protocols
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.43.0
+Added in 7.43.0 for HTTP proxies, 7.49.0 for SOCKS5 proxies.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
index ae5ede77..2e5c33a4 100644
--- a/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
+++ b/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_PUT.3 b/docs/libcurl/opts/CURLOPT_PUT.3
index bd40b7f8..87c6e063 100644
--- a/docs/libcurl/opts/CURLOPT_PUT.3
+++ b/docs/libcurl/opts/CURLOPT_PUT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_QUOTE.3 b/docs/libcurl/opts/CURLOPT_QUOTE.3
index 8bf3c14a..4dce76df 100644
--- a/docs/libcurl/opts/CURLOPT_QUOTE.3
+++ b/docs/libcurl/opts/CURLOPT_QUOTE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -69,6 +69,9 @@ The rm command removes the file specified by the file operand.
.IP "rmdir directory"
The rmdir command removes the directory entry specified by the directory
operand, provided it is empty.
+.IP "statvfs file"
+The statvfs command returns statistics on the file system in which specified
+file resides. (Added in 7.49.0)
.IP "symlink source_file target_file"
See ln.
.RE
diff --git a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
index 0c2d6884..c8223250 100644
--- a/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
+++ b/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RANGE.3 b/docs/libcurl/opts/CURLOPT_RANGE.3
index f5dd555c..375a944c 100644
--- a/docs/libcurl/opts/CURLOPT_RANGE.3
+++ b/docs/libcurl/opts/CURLOPT_RANGE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -35,9 +35,13 @@ out and X and Y are byte indexes.
HTTP transfers also support several intervals, separated with commas as in
\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
server to send the response document in pieces (using standard MIME separation
-techniques). For RTSP, the formatting of a range should follow RFC2326 Section
-12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should
-be given in npt, utc, or smpte formats.
+techniques). Unfortunately, the HTTP standard (RFC 7233 section 3.1) allows
+servers to ignore range requests so even when you set \fICURLOPT_RANGE(3)\fP
+for a request, you may end up getting the full response sent back.
+
+For RTSP, the formatting of a range should follow RFC2326 Section 12.29. For
+RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges should be given in
+npt, utc, or smpte formats.
Pass a NULL to this option to disable the use of ranges.
.SH DEFAULT
diff --git a/docs/libcurl/opts/CURLOPT_READDATA.3 b/docs/libcurl/opts/CURLOPT_READDATA.3
index a67f4154..ef51264c 100644
--- a/docs/libcurl/opts/CURLOPT_READDATA.3
+++ b/docs/libcurl/opts/CURLOPT_READDATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -56,8 +56,8 @@ if(curl) {
}
.fi
.SH AVAILABILITY
-This option was once known by the older name \fICURLOPT_INFILE\fP, the name
-\fICURLOPT_READDATA\fP was introduced in 7.9.7.
+This option was once known by the older name CURLOPT_INFILE, the name
+\fICURLOPT_READDATA(3)\fP was introduced in 7.9.7.
.SH RETURN VALUE
This will return CURLE_OK.
.SH "SEE ALSO"
diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
index edd9bdbf..a43e68b9 100644
--- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -68,7 +68,7 @@ The default internal read callback is fread().
This is used for all protocols when doing uploads.
.SH EXAMPLE
Here's an example setting a read callback for reading that to upload to an FTP
-site: http://curl.haxx.se/libcurl/c/ftpupload.html
+site: https://curl.haxx.se/libcurl/c/ftpupload.html
.SH AVAILABILITY
CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT
was added in 7.12.1.
diff --git a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
index fbec9f5c..8bd76f6b 100644
--- a/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
+++ b/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -32,8 +32,12 @@ Pass a long that holds a bitmask of CURLPROTO_* defines. If used, this bitmask
limits what protocols libcurl may use in a transfer that it follows to in a
redirect when \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled. This allows you to
limit specific transfers to only be allowed to use a subset of protocols in
-redirections. By default libcurl will allow all protocols except for FILE and
-SCP.
+redirections.
+
+By default libcurl 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. \fICURLPROTO_ALL\fP enables all protocols on
+redirect, including those disabled for security.
These are the available protocol defines:
.nf
@@ -60,13 +64,14 @@ CURLPROTO_RTSP
CURLPROTO_SCP
CURLPROTO_SFTP
CURLPROTO_SMB
+CURLPROTO_SMBS
CURLPROTO_SMTP
CURLPROTO_SMTPS
CURLPROTO_TELNET
CURLPROTO_TFTP
.fi
.SH DEFAULT
-All protocols except for FILE, SCP and SMB.
+All protocols except for FILE, SCP and since 7.40.0 SMB and SMBS.
.SH PROTOCOLS
All
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_REFERER.3 b/docs/libcurl/opts/CURLOPT_REFERER.3
index bcb16251..71aae83f 100644
--- a/docs/libcurl/opts/CURLOPT_REFERER.3
+++ b/docs/libcurl/opts/CURLOPT_REFERER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RESOLVE.3 b/docs/libcurl/opts/CURLOPT_RESOLVE.3
index 06a393a7..21027d4c 100644
--- a/docs/libcurl/opts/CURLOPT_RESOLVE.3
+++ b/docs/libcurl/opts/CURLOPT_RESOLVE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -44,12 +44,15 @@ ADDRESS can of course be either IPv4 or IPv6 style addressing.
This option effectively pre-populates the DNS cache with entries for the
host+port pair so redirects and everything that operations against the
-HOST+PORT will instead use your provided ADDRESS. Addresses to set with
-\fICURL_RESOLVE\fP will not time-out from the DNS cache like ordinary
+HOST+PORT will instead use your provided ADDRESS. Addresses set with
+\fICURLOPT_RESOLVE(3)\fP will not time-out from the DNS cache like ordinary
entries.
-You can remove names from the DNS cache again, to stop providing these fake
-resolves, by including a string in the linked list that uses the format
+The provided ADDRESS set by this option will be used even if
+\fICURLOPT_IPRESOLVE(3)\fP is set to make libcurl use another IP version.
+
+Remove names from the DNS cache again, to stop providing these fake resolves,
+by including a string in the linked list that uses the format
\&"-HOST:PORT". The host name must be prefixed with a dash, and the host name
and port number must exactly match what was already added previously.
.SH DEFAULT
@@ -66,7 +69,8 @@ curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_RESOLVE, host);
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
- res = curl_easy_perform(curl);
+
+ curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
@@ -75,8 +79,8 @@ if(curl) {
curl_slist_free_all(host);
.fi
.SH AVAILABILITY
-Added in 7.21.3
+Added in 7.21.3. Removal support added in 7.42.0.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
.SH "SEE ALSO"
-.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), "
+.BR CURLOPT_IPRESOLVE "(3), " CURLOPT_DNS_CACHE_TIMEOUT "(3), " CURLOPT_CONNECT_TO "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
index c25c6466..ac6986fd 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
index bcb30af4..4905f390 100644
--- a/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
+++ b/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
index c9510168..92536b95 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
index 9ab175da..60d1d8b3 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
index 9e7cf3a5..70c50550 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
index ec3d3877..cd318993 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
index 6a10ea02..1abb61f6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -34,10 +34,10 @@ single session may be controlling \fIrtsp://foo/twister/audio\fP and
appropriate stream using this option. If unset, libcurl will default to
operating on generic server options by passing '*' in the place of the RTSP
Stream URI. This option is distinct from \fICURLOPT_URL(3)\fP. When working
-with RTSP, the \fICURLOPT_STREAM_URI(3)\fP indicates what URL to send to the
-server in the request header while the \fICURLOPT_URL(3)\fP indicates where to
-make the connection to. (e.g. the \fICURLOPT_URL(3)\fP for the above examples
-might be set to \fIrtsp://foo/twister\fP
+with RTSP, the \fICURLOPT_RTSP_STREAM_URI(3)\fP indicates what URL to send to
+the server in the request header while the \fICURLOPT_URL(3)\fP indicates
+where to make the connection to. (e.g. the \fICURLOPT_URL(3)\fP for the above
+examples might be set to \fIrtsp://foo/twister\fP
.SH DEFAULT
'*'
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
index 4d0a4c05..367236b6 100644
--- a/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
+++ b/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SASL_IR.3 b/docs/libcurl/opts/CURLOPT_SASL_IR.3
index 7714217b..8fe4ee6c 100644
--- a/docs/libcurl/opts/CURLOPT_SASL_IR.3
+++ b/docs/libcurl/opts/CURLOPT_SASL_IR.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SEEKDATA.3 b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
index 830f099c..d4339ec6 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
index bf7e3045..179f0d2b 100644
--- a/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
index 116fdbe7..b9f491b0 100644
--- a/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
+++ b/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -22,23 +22,24 @@
.\"
.TH CURLOPT_SERVICE_NAME 3 "17 Jun 2015" "libcurl 7.43.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SERVICE_NAME \- SPNEGO service name
+CURLOPT_SERVICE_NAME \- authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SERVICE_NAME, char *name);
.SH DESCRIPTION
-Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name is "HTTP". This option allows you to
-change it.
-..SH DEFAULT
+Pass a char * as parameter to a string holding the \fIname\fP of the service
+for DIGEST-MD5, SPNEGO and Kerberos 5 authentication mechanisms. The default
+service names are "ftp", "HTTP", "imap", "pop" and "smtp". This option allows
+you to change them.
+.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+HTTP, FTP, IMAP, POP and SMTP
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.43.0
+Added in 7.43.0 for HTTP, 7.49.0 for FTP, IMAP, POP3 and SMTP.
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_SHARE.3 b/docs/libcurl/opts/CURLOPT_SHARE.3
index a483540e..6a0c7b81 100644
--- a/docs/libcurl/opts/CURLOPT_SHARE.3
+++ b/docs/libcurl/opts/CURLOPT_SHARE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
index 61c2b5e6..00dd3166 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
index e99fb79f..6262dc59 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
index cb318fca..ad0863b7 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
index d18ea9f9..440f0894 100644
--- a/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
+++ b/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -22,23 +22,25 @@
.\"
.TH CURLOPT_SOCKS5_GSSAPI_SERVICE 3 "19 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options"
.SH NAME
-CURLOPT_SOCKS5_GSSAPI_SERVICE \- proxy socks gssapi service name
+CURLOPT_SOCKS5_GSSAPI_SERVICE \- SOCKS5 proxy authentication service name
.SH SYNOPSIS
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SOCKS5_GSSAPI_SERVICE, char *name);
.SH DESCRIPTION
-Pass a char * as parameter to a string holding the \fIname\fP of the
-service. The default service name for a SOCKS5 server is
-rcmd/server-fqdn. This option allows you to change it.
+Deprecated since 7.49.0. Use \fICURLOPT_PROXY_SERVICE_NAME(3)\fP instead.
+
+Pass a char * as parameter to a string holding the \fIname\fP of the service.
+The default service name for a SOCKS5 server is "rcmd". This option allows you
+to change it.
.SH DEFAULT
See above
.SH PROTOCOLS
-Most
+All network protocols
.SH EXAMPLE
TODO
.SH AVAILABILITY
-Added in 7.19.4
+Added in 7.19.4, deprecated in 7.49.0
.SH RETURN VALUE
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
diff --git a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
index 966f7460..2ecca125 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
index 12e7720d..2ea23602 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
index 45e7d7a9..67c36738 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
index 4af9a3bf..21bc0e58 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
index 85574ced..9ea0c864 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
index f357f2c9..0c35ed55 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
index 35f2a199..f9aaeaef 100644
--- a/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
+++ b/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -35,11 +35,11 @@ libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment
variable is set, and just "id_dsa.pub" in the current directory if HOME is not
set.
-If an empty string is passed, libcurl will pass no public key to libssh2 which
-then tries to compute it from the private key, this is known to work when
-libssh2 1.4.0+ is linked against OpenSSL.
+If NULL (or an empty string) is passed, libcurl will pass no public key to
+libssh2, which then tries to compute it from the private key. This is known
+to work with libssh2 1.4.0+ linked against OpenSSL.
.SH DEFAULT
-As explained above
+NULL
.SH PROTOCOLS
SFTP and SCP
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERT.3 b/docs/libcurl/opts/CURLOPT_SSLCERT.3
index 7ae54f15..b5d68cf7 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -43,7 +43,7 @@ private key with \fICURLOPT_SSLKEY(3)\fP.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
index b19d5178..98df39d7 100644
--- a/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -36,7 +36,7 @@ PKCS#12-encoded files.
.SH DEFAULT
"PEM"
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
index a88a5a72..d0c48a4b 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -30,19 +30,26 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE, char *id);
.SH DESCRIPTION
Pass a pointer to a zero terminated string as parameter. It will be used as
the identifier for the crypto engine you want to use for your private key.
-
-If the crypto device cannot be loaded, \fICURLE_SSL_ENGINE_NOTFOUND\fP is
-returned.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-If built TLS enabled.
+Only if the SSL backend is OpenSSL built with engine support.
.SH RETURN VALUE
-Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
-CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+CURLE_OK - Engine found.
+
+CURLE_SSL_ENGINE_NOTFOUND - Engine not found, or OpenSSL was not built with
+engine support.
+
+CURLE_SSL_ENGINE_INITFAILED - Engine found but initialization failed.
+
+CURLE_NOT_BUILT_IN - Option not built in, OpenSSL is not the SSL backend.
+
+CURLE_UNKNOWN_OPTION - Option not recognized.
+
+CURLE_OUT_OF_MEMORY - Insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSLENGINE_DEFAULT "(3), " CURLOPT_SSLKEY "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
index 6570df10..0cd8d225 100644
--- a/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
+++ b/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -28,21 +28,27 @@ CURLOPT_SSLENGINE_DEFAULT \- make SSL engine default
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSLENGINE_DEFAULT, long val);
.SH DESCRIPTION
-Pass a long set to 1 as parameter. Sets the actual crypto engine as the
-default for (asymmetric) crypto operations.
+Pass a long set to 1 to make the already specified crypto engine the default
+for (asymmetric) crypto operations.
-If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
-returned.
+This option has no effect unless set after \fICURLOPT_SSLENGINE(3)\fP.
.SH DEFAULT
None
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
-If built TLS enabled.
+Only if the SSL backend is OpenSSL built with engine support.
.SH RETURN VALUE
-Returns CURLE_OK if TLS is supported, CURLE_UNKNOWN_OPTION if not, or
-CURLE_OUT_OF_MEMORY if there was insufficient heap space.
+CURLE_OK - Engine set as default.
+
+CURLE_SSL_ENGINE_SETFAILED - Engine could not be set as default.
+
+CURLE_NOT_BUILT_IN - Option not built in, OpenSSL is not the SSL backend.
+
+CURLE_UNKNOWN_OPTION - Option not recognized.
+
+CURLE_OUT_OF_MEMORY - Insufficient heap space.
.SH "SEE ALSO"
.BR CURLOPT_SSLENGINE "(3), " CURLOPT_SSLCERT "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEY.3 b/docs/libcurl/opts/CURLOPT_SSLKEY.3
index add69d89..8bc82058 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEY.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEY.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -38,7 +38,7 @@ present in the keychain or PKCS#12 file containing the certificate.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
index d4916349..7616a3f4 100644
--- a/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
+++ b/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -38,7 +38,7 @@ engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE(3)\fP.
.SH DEFAULT
"PEM"
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSLVERSION.3 b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
index a10dabd9..2f40e463 100644
--- a/docs/libcurl/opts/CURLOPT_SSLVERSION.3
+++ b/docs/libcurl/opts/CURLOPT_SSLVERSION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -52,7 +52,7 @@ TLSv1.2 (Added in 7.34.0)
.SH DEFAULT
CURL_SSLVERSION_DEFAULT
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
index 7e05a590..71833b55 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -40,7 +40,7 @@ compile OpenSSL.
You'll find more details about cipher lists on this URL:
- http://www.openssl.org/docs/apps/ciphers.html
+ https://www.openssl.org/docs/apps/ciphers.html
For NSS, valid examples of cipher lists include 'rsa_rc4_128_md5',
\'rsa_aes_128_sha\', etc. With NSS you don't add/remove ciphers. If one uses
@@ -53,7 +53,7 @@ You'll find more details about the NSS cipher lists on this URL:
.SH DEFAULT
NULL, use internal default
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
index 977cc12d..be2cf348 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * 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
-.\" * are also available at http://curl.haxx.se/docs/copyright.html.
+.\" * are also available at https://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
@@ -34,7 +34,7 @@ parameter.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
index e3e01707..177947bb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -50,18 +50,88 @@ callback's error code. Set the \fIuserptr\fP argument with the
This function will get called on all new connections made to a server, during
the SSL negotiation. The SSL_CTX pointer will be a new one every time.
-To use this properly, a non-trivial amount of knowledge of your SSL library
-is necessary. For example, you can use this function to call library-specific
+To use this properly, a non-trivial amount of knowledge of your SSL library is
+necessary. For example, you can use this function to call library-specific
callbacks to add additional validation code for certificates, and even to
-change the actual URI of a HTTPS request (example used in the lib509 test
-case). See also the example section for a replacement of the key, certificate
-and trust file settings.
+change the actual URI of a HTTPS request.
.SH DEFAULT
NULL
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
-TODO
+.nf
+/* OpenSSL specific */
+
+#include <openssl/ssl.h>
+#include <curl/curl.h>
+#include <stdio.h>
+
+static CURLcode sslctx_function(CURL *curl, void *sslctx, void *parm)
+{
+ X509_STORE *store;
+ X509 *cert=NULL;
+ BIO *bio;
+ char *mypem = /* example CA cert PEM - shortened */
+ "-----BEGIN CERTIFICATE-----\n"
+ "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"
+ "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"
+ "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"
+ "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"
+ "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"
+ "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"
+ "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
+ "-----END CERTIFICATE-----\n";
+ /* get a BIO */
+ bio=BIO_new_mem_buf(mypem, -1);
+ /* use it to read the PEM formatted certificate from memory into an X509
+ * structure that SSL can use
+ */
+ PEM_read_bio_X509(bio, &cert, 0, NULL);
+ if(cert == NULL)
+ printf("PEM_read_bio_X509 failed...\n");
+
+ /* get a pointer to the X509 certificate store (which may be empty!) */
+ store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
+
+ /* add our certificate to this store */
+ if(X509_STORE_add_cert(store, cert)==0)
+ printf("error adding certificate\n");
+
+ /* decrease reference counts */
+ X509_free(cert);
+ BIO_free(bio);
+
+ /* all set to go */
+ return CURLE_OK;
+}
+
+int main(void)
+{
+ CURL * ch;
+ CURLcode rv;
+
+ rv=curl_global_init(CURL_GLOBAL_ALL);
+ ch=curl_easy_init();
+ rv=curl_easy_setopt(ch, CURLOPT_SSLCERTTYPE, "PEM");
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_VERIFYPEER, 1L);
+ rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.example.com/");
+
+ /* Retrieve page using cacerts' certificate -> will succeed
+ * load the certificate by installing a function doing the nescessary
+ * "modifications" to the SSL CONTEXT just before link init
+ */
+ rv=curl_easy_setopt(ch, CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
+ rv=curl_easy_perform(ch);
+ if(rv==CURLE_OK)
+ printf("*** transfer succeeded ***\n");
+ else
+ printf("*** transfer failed ***\n");
+
+ curl_easy_cleanup(ch);
+ curl_global_cleanup();
+ return rv;
+}
+.fi
.SH AVAILABILITY
Added in 7.11.0 for OpenSSL. Added in 7.42.0 for wolfSSL/CyaSSL. Other SSL
backends not supported.
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
index 6716f721..61863c8c 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
index 5db9b510..67f0ebec 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
index 31a05e68..3073dadb 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -37,7 +37,7 @@ round trip when performing a full handshake.
.SH DEFAULT
0
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
index 09bcb96c..4943233d 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -30,13 +30,25 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_SSL_OPTIONS, long bitmask);
.SH DESCRIPTION
Pass a long with a bitmask to tell libcurl about specific SSL behaviors.
-\fICURLSSLOPT_ALLOW_BEAST\fP is the only supported bit and by setting this the
-user will tell libcurl to not attempt to use any workarounds for a security
-flaw in the SSL3 and TLS1.0 protocols. If this option isn't used or this bit
-is set to 0, the SSL layer libcurl uses may use a work-around for this flaw
-although it might cause interoperability problems with some (older) SSL
-implementations. WARNING: avoiding this work-around lessens the security, and
-by setting this option to 1 you ask for exactly that.
+\fICURLSSLOPT_ALLOW_BEAST\fP tells libcurl to not attempt to use any
+workarounds for a security flaw in the SSL3 and TLS1.0 protocols. If this
+option isn't used or this bit is set to 0, the SSL layer libcurl uses may use a
+work-around for this flaw although it might cause interoperability problems
+with some (older) SSL implementations. WARNING: avoiding this work-around
+lessens the security, and by setting this option to 1 you ask for exactly that.
+This option is only supported for DarwinSSL, NSS and OpenSSL.
+
+Added in 7.44.0:
+
+\fICURLSSLOPT_NO_REVOKE\fP tells libcurl to disable certificate revocation
+checks for those SSL backends where such behavior is present. \fBCurrently this
+option 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.\fP This option may have broader support to accommodate other
+SSL backends in the future.
+https://curl.haxx.se/docs/ssl-compared.html
+
+
.SH DEFAULT
0
.SH PROTOCOLS
diff --git a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
index 4baa0616..c939465f 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
index fbf20428..15914732 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -64,7 +64,7 @@ also set to zero and cannot be overridden.
.SH DEFAULT
2
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
index 81bb5939..5a63481a 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -60,7 +60,7 @@ the correct end-point.
.SH DEFAULT
By default, curl assumes a value of 1.
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
.nf
CURL *curl = curl_easy_init();
diff --git a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
index d7f011a4..30212259 100644
--- a/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
+++ b/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -38,7 +38,7 @@ extension, the verification will fail.
.SH DEFAULT
0
.SH PROTOCOLS
-All TLS based protocols: HTTPS, FTPS, IMAPS, POP3, SMTPS etc.
+All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
.SH EXAMPLE
TODO
.SH AVAILABILITY
diff --git a/docs/libcurl/opts/CURLOPT_STDERR.3 b/docs/libcurl/opts/CURLOPT_STDERR.3
index 8ef1a32a..7dfe371f 100644
--- a/docs/libcurl/opts/CURLOPT_STDERR.3
+++ b/docs/libcurl/opts/CURLOPT_STDERR.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
new file mode 100644
index 00000000..831d2111
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3
@@ -0,0 +1,56 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_DEPENDS 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_DEPENDS \- set stream this transfer depends on
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS, CURL *dephandle);
+.SH DESCRIPTION
+Pass a CURL * pointer in \fIdephandle\fP to identify the stream within the
+same connection that this stream is depending upon. This option clears the
+exclusive it and is mutually exclusive to the
+\fICURLOPT_STREAM_DEPENDS_E(3)\fP option.
+
+The spec says "Including a dependency expresses a preference to allocate
+resources to the identified stream rather than to the dependent stream."
+
+This option can be set during transfer.
+
+\fIdephandle\fP must not be the same as \fIhandle\fP, that will cause this
+function to return an error. It must be another easy handle, and it also needs
+to be a handle of a transfer that will be sent over the same HTTP/2 connection
+for this option to have an actual effect.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS_E "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
new file mode 100644
index 00000000..c1d9fd06
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3
@@ -0,0 +1,59 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_DEPENDS_E 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_DEPENDS_E \- set stream this transfer depends on execlusively
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_DEPENDS_E, CURL *dephandle);
+.SH DESCRIPTION
+Pass a CURL * pointer in \fIdephandle\fP to identify the stream within the
+same connection that this stream is depending upon exclusively. That means it
+depends on it and sets the Exclusive bit.
+
+The spec says "Including a dependency expresses a preference to allocate
+resources to the identified stream rather than to the dependent stream."
+
+Setting a dependency with the exclusive flag for a reprioritized stream causes
+all the dependencies of the new parent stream to become dependent on the
+reprioritized stream.
+
+This option can be set during transfer.
+
+\fIdephandle\fP must not be the same as \fIhandle\fP, that will cause this
+function to return an error. It must be another easy handle, and it also needs
+to be a handle of a transfer that will be sent over the same HTTP/2 connection
+for this option to have an actual effect.
+.SH DEFAULT
+NULL
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_WEIGHT "(3), " CURLOPT_STREAM_DEPENDS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
new file mode 100644
index 00000000..a2b2472a
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3
@@ -0,0 +1,63 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_STREAM_WEIGHT 3 "13 Sep 2015" "libcurl 7.46.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_STREAM_WEIGHT \- set numerical stream weight
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_STREAM_WEIGHT, long weight);
+.SH DESCRIPTION
+Set the long \fIweight\fP to a number between 1 and 256.
+
+When using HTTP/2, this option sets the individual weight for this particular
+stream used by the easy \fIhandle\fP. Setting and using weights only makes
+sense and is only usable when doing multiple streams over the same
+connections, which thus implies that you use \fICURLMOPT_PIPELINING(3)\fP.
+
+This option can be set during transfer and will then cause the updated weight
+info get sent to the server the next time a HTTP/2 frame is sent to the
+server.
+
+See section 5.3 of RFC 7540 for protocol details:
+https://httpwg.github.io/specs/rfc7540.html#StreamPriority
+
+Streams with the same parent should be allocated resources proportionally
+based on their weight. So if you have two streams going, stream A with weight
+16 and stream B with weight 32, stream B will get two thirds (32/48) of the
+available bandwidth (assuming the server can send off the data equally for
+both streams).
+.SH DEFAULT
+If nothing is set, the HTTP/2 protocol itself will use its own default which
+is 16.
+.SH PROTOCOLS
+HTTP/2
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.46.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
+.SH "SEE ALSO"
+.BR CURLOPT_STREAM_DEPENDS "(3), " CURLOPT_STREAM_DEPENDS_E "(3), "
+.BR CURLOPT_PIPEWAIT "(3), " CURLMOPT_PIPELINING "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
new file mode 100644
index 00000000..f8f93438
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3
@@ -0,0 +1,47 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TCP_FASTOPEN 3 "16 Feb 2016" "libcurl 7.49.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TCP_FASTOPEN \- enable TCP Fast Open
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TCP_FASTOPEN, long enable);
+.SH DESCRIPTION
+Pass a long as parameter set to 1 to enable or 0 to disable.
+
+TCP Fast Open (RFC7413) is a mechanism that allows data to be carried in the
+SYN and SYN-ACK packets and consumed by the receiving end during the initial
+connection handshake, saving up to one full round-trip time (RTT).
+.SH DEFAULT
+0
+.SH PROTOCOLS
+All
+.SH EXAMPLE
+TODO
+.SH AVAILABILITY
+Added in 7.49.0. This option is currently only supported on Linux and OS X
+El Capitan.
+.SH RETURN VALUE
+Returns CURLE_OK if fast open is supported by the operating system, otherwise
+returns CURLE_NOT_BUILT_IN.
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
index 941cc488..cc3642fe 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
index d60a3dff..f5f57628 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
index 42bc0b4e..f332a8f4 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
index bd135167..efb25869 100644
--- a/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
+++ b/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
index f5a9bc5a..7a181ede 100644
--- a/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
+++ b/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
index 05bc639c..6aafbd14 100644
--- a/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
+++ b/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
new file mode 100644
index 00000000..97940fbb
--- /dev/null
+++ b/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3
@@ -0,0 +1,71 @@
+.\" **************************************************************************
+.\" * _ _ ____ _
+.\" * Project ___| | | | _ \| |
+.\" * / __| | | | |_) | |
+.\" * | (__| |_| | _ <| |___
+.\" * \___|\___/|_| \_\_____|
+.\" *
+.\" * Copyright (C) 1998 - 2016, 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 https://curl.haxx.se/docs/copyright.html.
+.\" *
+.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
+.\" * copies of the Software, and permit persons to whom the Software is
+.\" * furnished to do so, under the terms of the COPYING file.
+.\" *
+.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+.\" * KIND, either express or implied.
+.\" *
+.\" **************************************************************************
+.\"
+.TH CURLOPT_TFTP_NO_OPTIONS 3 "23 Feb 2016" "libcurl 7.48.0" "curl_easy_setopt options"
+.SH NAME
+CURLOPT_TFTP_NO_OPTIONS \- Do not send TFTP options requests.
+.SH SYNOPSIS
+#include <curl/curl.h>
+
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TFTP_NO_OPTIONS, long onoff);
+.SH DESCRIPTION
+Set \fIonoff\fP to 1L to exclude all TFTP options defined in RFC2347, RFC2348
+and RFC2349 from read and write requests (RRQs/WRQs).
+
+This option improves interop with some legacy servers that do not acknowledge
+or properly implement TFTP options. When this option is used
+\fICURLOPT_TFTP_BLKSIZE(3)\fP is ignored.
+.SH DEFAULT
+0
+.SH PROTOCOLS
+TFTP
+.SH EXAMPLE
+.nf
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *fp)
+{
+ return fwrite(ptr, size, nmemb, (FILE *)fp);
+}
+
+CURL *curl = curl_easy_init();
+if(curl) {
+ FILE *fp = fopen("foo.bin", "wb");
+ if(fp) {
+ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)fp);
+ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
+
+ curl_easy_setopt(curl, CURLOPT_URL, "tftp://example.com/foo.bin");
+
+ /* do not send TFTP options requests */
+ curl_easy_setopt(curl, CURLOPT_TFTP_NO_OPTIONS, 1L);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+
+ fclose(fp);
+ }
+ curl_easy_cleanup(curl);
+}
+.fi
+.SH AVAILABILITY
+Added in 7.48.0
+.SH RETURN VALUE
+Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
diff --git a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
index 66c34ff8..a8fcea7b 100644
--- a/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
+++ b/docs/libcurl/opts/CURLOPT_TIMECONDITION.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -42,7 +42,21 @@ CURL_TIMECOND_NONE (0)
.SH PROTOCOLS
HTTP, FTP, RTSP, and FILE
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
index 6440ffea..45e69b4d 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
index 3727133b..2a7afb10 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
index 43a3871c..cd745ffa 100644
--- a/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
+++ b/docs/libcurl/opts/CURLOPT_TIMEVALUE.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,7 +36,21 @@ since 1 Jan 1970, and the time will be used in a condition as specified with
.SH PROTOCOLS
HTTP, FTP, RTSP, and FILE
.SH EXAMPLE
-TODO
+.nf
+CURL *curl = curl_easy_init();
+if(curl) {
+ curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
+
+ /* January 1, 2020 is 1577833200 */
+ curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
+
+ /* If-Modified-Since the above time stamp */
+ curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
+
+ /* Perform the request */
+ curl_easy_perform(curl);
+}
+.fi
.SH AVAILABILITY
Always
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
index 1c8697f7..78fad0ef 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
index b5cdd5bc..5655e7d7 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -26,19 +26,19 @@ CURLOPT_TLSAUTH_TYPE \- set TLS authentication methods
.SH SYNOPSIS
#include <curl/curl.h>
-CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, long bitmask);
+CURLcode curl_easy_setopt(CURL *handle, CURLOPT_TLSAUTH_TYPE, char *type);
.SH DESCRIPTION
-Pass a long as parameter, which is set to a bitmask, to tell libcurl which
-authentication method(s) you want it to use for TLS authentication.
+Pass a pointer to a zero terminated string as parameter. The string
+should be the method of the TLS authentication. Supported method is "SRP".
-.IP CURL_TLSAUTH_SRP
+.IP SRP
TLS-SRP authentication. Secure Remote Password authentication for TLS is
defined in RFC5054 and provides mutual authentication if both sides have a
shared secret. To use TLS-SRP, you must also set the
\fICURLOPT_TLSAUTH_USERNAME(3)\fP and \fICURLOPT_TLSAUTH_PASSWORD(3)\fP
options.
.SH DEFAULT
-CURL_TLSAUTH_NONE (0)
+blank
.SH PROTOCOLS
All TLS-based protocols
.SH EXAMPLE
diff --git a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
index c5bb2dfb..5022e4e0 100644
--- a/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
index 6e62413d..aa1759c2 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
index 7f2a11ca..242da13f 100644
--- a/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
+++ b/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -36,7 +36,7 @@ HTTP response sent using a compressed Transfer-Encoding that will be
automatically uncompressed by libcurl on reception.
Transfer-Encoding differs slightly from the Content-Encoding you ask for with
-\fBCURLOPT_ACCEPT_ENCODING(3)\fP in that a Transfer-Encoding is strictly meant
+\fICURLOPT_ACCEPT_ENCODING(3)\fP in that a Transfer-Encoding is strictly meant
to be for the transfer and thus MUST be decoded before the data arrives in the
client. Traditionally, Transfer-Encoding has been much less used and supported
by both HTTP clients and HTTP servers.
diff --git a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
index a659cd2c..299c3ccb 100644
--- a/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
+++ b/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
index 68c38607..9e4cf269 100644
--- a/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
+++ b/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_UPLOAD.3 b/docs/libcurl/opts/CURLOPT_UPLOAD.3
index d24bd289..0ad201a1 100644
--- a/docs/libcurl/opts/CURLOPT_UPLOAD.3
+++ b/docs/libcurl/opts/CURLOPT_UPLOAD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_URL.3 b/docs/libcurl/opts/CURLOPT_URL.3
index 6e4824a9..a7d81df2 100644
--- a/docs/libcurl/opts/CURLOPT_URL.3
+++ b/docs/libcurl/opts/CURLOPT_URL.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -40,9 +40,11 @@ libcurl doesn't validate the syntax or use this variable until the transfer is
issued. Even if you set a crazy value here, \fIcurl_easy_setopt(3)\fP will
still return \fICURLE_OK\fP.
-If the given URL lacks the scheme (such as "http://" or "ftp://" etc) then
-libcurl will attempt to resolve the protocol based on one of the following
-given host names: HTTP, FTP, DICT, LDAP, IMAP, POP3 or SMTP
+If the given URL is missing a scheme name (such as "http://" or "ftp://" etc)
+then libcurl 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 \fICURLOPT_DEFAULT_PROTOCOL(3)\fP for details.
Should the protocol, either that specified by the scheme or deduced by libcurl
from the host name, not be supported by libcurl then
@@ -330,4 +332,5 @@ similar is called.
.SH "SEE ALSO"
.BR CURLOPT_VERBOSE "(3), " CURLOPT_PROTOCOLS "(3), "
.BR CURLOPT_FORBID_REUSE "(3), " CURLOPT_FRESH_CONNECT "(3), "
-.BR curl_easy_perform "(3)"
+.BR curl_easy_perform "(3), "
+.BR CURLINFO_REDIRECT_URL "(3), " CURLOPT_PATH_AS_IS "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_USERAGENT.3 b/docs/libcurl/opts/CURLOPT_USERAGENT.3
index 4d7036d8..c769e955 100644
--- a/docs/libcurl/opts/CURLOPT_USERAGENT.3
+++ b/docs/libcurl/opts/CURLOPT_USERAGENT.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_USERNAME.3 b/docs/libcurl/opts/CURLOPT_USERNAME.3
index 7546f743..ec600107 100644
--- a/docs/libcurl/opts/CURLOPT_USERNAME.3
+++ b/docs/libcurl/opts/CURLOPT_USERNAME.3
@@ -5,11 +5,11 @@
.\" * | (__| |_| | _ <| |___
.\" * \___|\___/|_| \_\_____|
.\" *
-.\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
+.\" * Copyright (C) 1998 - 2016, 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.
+.\" * are also available at https://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
@@ -33,7 +33,7 @@ CURLcode curl_easy_setopt(CURL *handle, CURLOPT_USERNAME,
Pass a char * as parameter, which should be pointing to the zero terminated
user name to use for the transfer.
-\fBCURLOPT_USERNAME(3)\fP sets the user name to be used in protocol
+\fICURLOPT_USERNAME(3)\fP sets the user name to be used in protocol
authentication. You should not use this option together with the (older)
\fICURLOPT_USERPWD(3)\fP option.
diff --git a/docs/libcurl/opts/CURLOPT_USERPWD.3 b/docs/libcurl/opts/CURLOPT_USERPWD.3
index 22e920f3..19404f6b 100644
--- a/docs/libcurl/opts/CURLOPT_USERPWD.3
+++ b/docs/libcurl/opts/CURLOPT_USERPWD.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_USE_SSL.3 b/docs/libcurl/opts/CURLOPT_USE_SSL.3
index 348f1b0c..37a224d4 100644
--- a/docs/libcurl/opts/CURLOPT_USE_SSL.3
+++ b/docs/libcurl/opts/CURLOPT_USE_SSL.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_VERBOSE.3 b/docs/libcurl/opts/CURLOPT_VERBOSE.3
index 732b8c41..e6a6fd19 100644
--- a/docs/libcurl/opts/CURLOPT_VERBOSE.3
+++ b/docs/libcurl/opts/CURLOPT_VERBOSE.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
index b567045e..1ca1bedd 100644
--- a/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
+++ b/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -78,7 +78,7 @@ Using the rules above, a file name pattern can be constructed:
.SH PROTOCOLS
This feature is only supported for FTP download.
.SH EXAMPLE
-See http://curl.haxx.se/libcurl/c/ftp-wildcard.html
+See https://curl.haxx.se/libcurl/c/ftp-wildcard.html
.SH AVAILABILITY
Added in 7.21.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_WRITEDATA.3 b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
index 0b7a5028..fdb58863 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEDATA.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEDATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -49,7 +49,7 @@ A common technique is to use the write callback to store the incoming data
into a dynamically growing allocated buffer, and then this
\fICURLOPT_WRITEDATA(3)\fP is used to point to a struct or the buffer to store
data in. Like in the getinmemory example:
-http://curl.haxx.se/libcurl/c/getinmemory.html
+https://curl.haxx.se/libcurl/c/getinmemory.html
.SH AVAILABILITY
Available in all libcurl versions. This option was formerly known as
\fICURLOPT_FILE\fP, the name \fICURLOPT_WRITEDATA(3)\fP was introduced in
diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
index f5a45a3c..2c77a4c1 100644
--- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -76,6 +76,6 @@ This will return CURLE_OK.
.SH EXAMPLE
A common technique is to use this callback to store the incoming data into a
dynamically growing allocated buffer. Like in the getinmemory example:
-http://curl.haxx.se/libcurl/c/getinmemory.html
+https://curl.haxx.se/libcurl/c/getinmemory.html
.SH "SEE ALSO"
.BR CURLOPT_WRITEDATA "(3), " CURLOPT_READFUNCTION "(3), "
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
index b2c170f6..fc1de8c9 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFODATA.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -37,7 +37,7 @@ The default value of this parameter is NULL.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Added in 7.32.0
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
index cad81182..9bd89db7 100644
--- a/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
+++ b/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -72,7 +72,7 @@ users.
.SH PROTOCOLS
All
.SH EXAMPLE
-http://curl.haxx.se/libcurl/c/progressfunc.html
+https://curl.haxx.se/libcurl/c/progressfunc.html
.SH AVAILABILITY
Added in 7.32.0. This callback replaces \fICURLOPT_PROGRESSFUNCTION(3)\fP
.SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
index 2644c883..b6c1feef 100644
--- a/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
+++ b/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/opts/Makefile.am b/docs/libcurl/opts/Makefile.am
index 5517811d..49674d5c 100644
--- a/docs/libcurl/opts/Makefile.am
+++ b/docs/libcurl/opts/Makefile.am
@@ -5,11 +5,11 @@
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
-# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al.
+# Copyright (C) 1998 - 2016, 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.
+# are also available at https://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
@@ -22,318 +22,871 @@
AUTOMAKE_OPTIONS = foreign no-dependencies
-man_MANS = CURLOPT_ACCEPT_ENCODING.3 CURLOPT_ACCEPTTIMEOUT_MS.3 \
- CURLOPT_ADDRESS_SCOPE.3 CURLOPT_APPEND.3 CURLOPT_AUTOREFERER.3 \
- CURLOPT_BUFFERSIZE.3 CURLOPT_CAINFO.3 CURLOPT_CAPATH.3 \
- CURLOPT_CERTINFO.3 CURLOPT_CHUNK_BGN_FUNCTION.3 CURLOPT_CHUNK_DATA.3 \
- CURLOPT_CHUNK_END_FUNCTION.3 CURLOPT_CLOSESOCKETDATA.3 \
- CURLOPT_CLOSESOCKETFUNCTION.3 CURLOPT_CONNECT_ONLY.3 \
- CURLOPT_CONNECTTIMEOUT.3 CURLOPT_CONNECTTIMEOUT_MS.3 \
- CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.3 CURLOPT_COOKIE.3 \
- CURLOPT_COOKIEFILE.3 CURLOPT_COOKIEJAR.3 CURLOPT_COOKIELIST.3 \
- CURLOPT_COOKIESESSION.3 CURLOPT_COPYPOSTFIELDS.3 CURLOPT_CRLF.3 \
- CURLOPT_CRLFILE.3 CURLOPT_CUSTOMREQUEST.3 CURLOPT_DEBUGDATA.3 \
- CURLOPT_DEBUGFUNCTION.3 CURLOPT_DIRLISTONLY.3 \
- CURLOPT_DNS_CACHE_TIMEOUT.3 CURLOPT_DNS_INTERFACE.3 \
- CURLOPT_DNS_LOCAL_IP4.3 CURLOPT_DNS_LOCAL_IP6.3 CURLOPT_DNS_SERVERS.3 \
- CURLOPT_DNS_USE_GLOBAL_CACHE.3 CURLOPT_EGDSOCKET.3 \
- CURLOPT_ERRORBUFFER.3 CURLOPT_EXPECT_100_TIMEOUT_MS.3 \
- CURLOPT_FAILONERROR.3 CURLOPT_FILETIME.3 CURLOPT_FNMATCH_DATA.3 \
- CURLOPT_FNMATCH_FUNCTION.3 CURLOPT_FOLLOWLOCATION.3 \
- CURLOPT_FORBID_REUSE.3 CURLOPT_FRESH_CONNECT.3 CURLOPT_FTP_ACCOUNT.3 \
- CURLOPT_FTP_ALTERNATIVE_TO_USER.3 CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
- CURLOPT_FTP_FILEMETHOD.3 CURLOPT_FTPPORT.3 \
- CURLOPT_FTP_RESPONSE_TIMEOUT.3 CURLOPT_FTP_SKIP_PASV_IP.3 \
- CURLOPT_FTPSSLAUTH.3 CURLOPT_FTP_SSL_CCC.3 CURLOPT_FTP_USE_EPRT.3 \
- CURLOPT_FTP_USE_EPSV.3 CURLOPT_FTP_USE_PRET.3 \
- CURLOPT_GSSAPI_DELEGATION.3 CURLOPT_HEADER.3 CURLOPT_HEADERDATA.3 \
- CURLOPT_HEADERFUNCTION.3 CURLOPT_HEADEROPT.3 CURLOPT_HTTP200ALIASES.3 \
- CURLOPT_HTTPAUTH.3 CURLOPT_HTTP_CONTENT_DECODING.3 CURLOPT_HTTPGET.3 \
- CURLOPT_HTTPHEADER.3 CURLOPT_HTTPPOST.3 CURLOPT_HTTPPROXYTUNNEL.3 \
- CURLOPT_HTTP_TRANSFER_DECODING.3 CURLOPT_HTTP_VERSION.3 \
- CURLOPT_IGNORE_CONTENT_LENGTH.3 CURLOPT_INFILESIZE.3 \
- CURLOPT_INFILESIZE_LARGE.3 CURLOPT_INTERFACE.3 \
- CURLOPT_INTERLEAVEDATA.3 CURLOPT_INTERLEAVEFUNCTION.3 \
- CURLOPT_IOCTLDATA.3 CURLOPT_IOCTLFUNCTION.3 CURLOPT_IPRESOLVE.3 \
- CURLOPT_ISSUERCERT.3 CURLOPT_KEYPASSWD.3 CURLOPT_KRBLEVEL.3 \
- CURLOPT_LOCALPORT.3 CURLOPT_LOCALPORTRANGE.3 CURLOPT_LOGIN_OPTIONS.3 \
- CURLOPT_LOW_SPEED_LIMIT.3 CURLOPT_LOW_SPEED_TIME.3 CURLOPT_MAIL_AUTH.3 \
- CURLOPT_MAIL_FROM.3 CURLOPT_MAIL_RCPT.3 CURLOPT_MAXCONNECTS.3 \
- CURLOPT_MAXFILESIZE.3 CURLOPT_MAXFILESIZE_LARGE.3 \
- CURLOPT_MAX_RECV_SPEED_LARGE.3 CURLOPT_MAXREDIRS.3 \
- CURLOPT_MAX_SEND_SPEED_LARGE.3 CURLOPT_NETRC.3 CURLOPT_NETRC_FILE.3 \
- CURLOPT_NEW_DIRECTORY_PERMS.3 CURLOPT_NEW_FILE_PERMS.3 \
- CURLOPT_NOBODY.3 CURLOPT_NOPROGRESS.3 CURLOPT_NOPROXY.3 \
- CURLOPT_NOSIGNAL.3 CURLOPT_OPENSOCKETDATA.3 \
- CURLOPT_OPENSOCKETFUNCTION.3 CURLOPT_PASSWORD.3 \
- CURLOPT_PINNEDPUBLICKEY.3 CURLOPT_PORT.3 CURLOPT_POST.3 \
- CURLOPT_POSTFIELDS.3 CURLOPT_POSTFIELDSIZE.3 \
- CURLOPT_POSTFIELDSIZE_LARGE.3 CURLOPT_POSTQUOTE.3 CURLOPT_POSTREDIR.3 \
- CURLOPT_PREQUOTE.3 CURLOPT_PRIVATE.3 CURLOPT_PROGRESSDATA.3 \
- CURLOPT_PROGRESSFUNCTION.3 CURLOPT_PROTOCOLS.3 CURLOPT_PROXY.3 \
- CURLOPT_PROXYAUTH.3 CURLOPT_PROXYHEADER.3 CURLOPT_PROXYPASSWORD.3 \
- CURLOPT_PROXYPORT.3 CURLOPT_PROXY_TRANSFER_MODE.3 CURLOPT_PROXYTYPE.3 \
- CURLOPT_PROXYUSERNAME.3 CURLOPT_PROXYUSERPWD.3 CURLOPT_PUT.3 \
- CURLOPT_QUOTE.3 CURLOPT_RANDOM_FILE.3 CURLOPT_RANGE.3 \
- CURLOPT_READDATA.3 CURLOPT_READFUNCTION.3 CURLOPT_REDIR_PROTOCOLS.3 \
- CURLOPT_REFERER.3 CURLOPT_RESOLVE.3 CURLOPT_RESUME_FROM.3 \
- CURLOPT_RESUME_FROM_LARGE.3 CURLOPT_RTSP_CLIENT_CSEQ.3 \
- CURLOPT_RTSP_REQUEST.3 CURLOPT_RTSP_SERVER_CSEQ.3 \
- CURLOPT_RTSP_SESSION_ID.3 CURLOPT_RTSP_STREAM_URI.3 \
- CURLOPT_RTSP_TRANSPORT.3 CURLOPT_SASL_IR.3 CURLOPT_SEEKDATA.3 \
- CURLOPT_SEEKFUNCTION.3 CURLOPT_SHARE.3 CURLOPT_SOCKOPTDATA.3 \
- CURLOPT_SOCKOPTFUNCTION.3 CURLOPT_SOCKS5_GSSAPI_NEC.3 \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.3 CURLOPT_SSH_AUTH_TYPES.3 \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 CURLOPT_SSH_KEYDATA.3 \
- CURLOPT_SSH_KEYFUNCTION.3 CURLOPT_SSH_KNOWNHOSTS.3 \
- CURLOPT_SSH_PRIVATE_KEYFILE.3 CURLOPT_SSH_PUBLIC_KEYFILE.3 \
- CURLOPT_SSLCERT.3 CURLOPT_SSLCERTTYPE.3 CURLOPT_SSL_CIPHER_LIST.3 \
- CURLOPT_SSL_CTX_DATA.3 CURLOPT_SSL_CTX_FUNCTION.3 \
- CURLOPT_SSL_ENABLE_ALPN.3 CURLOPT_SSL_ENABLE_NPN.3 CURLOPT_SSLENGINE.3 \
- CURLOPT_SSLENGINE_DEFAULT.3 CURLOPT_SSL_FALSESTART.3 CURLOPT_SSLKEY.3 \
- CURLOPT_SSLKEYTYPE.3 CURLOPT_SSL_OPTIONS.3 \
- CURLOPT_SSL_SESSIONID_CACHE.3 CURLOPT_SSL_VERIFYHOST.3 \
- CURLOPT_SSL_VERIFYPEER.3 CURLOPT_SSL_VERIFYSTATUS.3 \
- CURLOPT_SSLVERSION.3 CURLOPT_STDERR.3 CURLOPT_TCP_KEEPALIVE.3 \
- CURLOPT_TCP_KEEPIDLE.3 CURLOPT_TCP_KEEPINTVL.3 CURLOPT_TCP_NODELAY.3 \
- CURLOPT_TELNETOPTIONS.3 CURLOPT_TFTP_BLKSIZE.3 CURLOPT_TIMECONDITION.3 \
- CURLOPT_TIMEOUT.3 CURLOPT_TIMEOUT_MS.3 CURLOPT_TIMEVALUE.3 \
- CURLOPT_TLSAUTH_PASSWORD.3 CURLOPT_TLSAUTH_TYPE.3 \
- CURLOPT_TLSAUTH_USERNAME.3 CURLOPT_TRANSFER_ENCODING.3 \
- CURLOPT_TRANSFERTEXT.3 CURLOPT_UNRESTRICTED_AUTH.3 CURLOPT_UPLOAD.3 \
- CURLOPT_URL.3 CURLOPT_USERAGENT.3 CURLOPT_USERNAME.3 CURLOPT_USERPWD.3 \
- CURLOPT_USE_SSL.3 CURLOPT_VERBOSE.3 CURLOPT_WILDCARDMATCH.3 \
- CURLOPT_WRITEDATA.3 CURLOPT_WRITEFUNCTION.3 CURLOPT_XFERINFODATA.3 \
- CURLOPT_XFERINFOFUNCTION.3 CURLOPT_XOAUTH2_BEARER.3 \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 CURLMOPT_MAXCONNECTS.3 \
- CURLMOPT_MAX_HOST_CONNECTIONS.3 CURLMOPT_MAX_PIPELINE_LENGTH.3 \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.3 CURLMOPT_PIPELINING.3 \
- CURLMOPT_PIPELINING_SERVER_BL.3 CURLMOPT_PIPELINING_SITE_BL.3 \
- CURLMOPT_SOCKETDATA.3 CURLMOPT_SOCKETFUNCTION.3 CURLMOPT_TIMERDATA.3 \
- CURLMOPT_TIMERFUNCTION.3 CURLOPT_UNIX_SOCKET_PATH.3 \
- CURLOPT_PATH_AS_IS.3 CURLOPT_PROXY_SERVICE_NAME.3 \
- CURLOPT_SERVICE_NAME.3 CURLOPT_PIPEWAIT.3
+man_MANS = \
+ CURLINFO_ACTIVESOCKET.3 \
+ CURLINFO_APPCONNECT_TIME.3 \
+ CURLINFO_CERTINFO.3 \
+ CURLINFO_CONDITION_UNMET.3 \
+ CURLINFO_CONNECT_TIME.3 \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.3 \
+ CURLINFO_CONTENT_TYPE.3 \
+ CURLINFO_COOKIELIST.3 \
+ CURLINFO_EFFECTIVE_URL.3 \
+ CURLINFO_FILETIME.3 \
+ CURLINFO_FTP_ENTRY_PATH.3 \
+ CURLINFO_HEADER_SIZE.3 \
+ CURLINFO_HTTPAUTH_AVAIL.3 \
+ CURLINFO_HTTP_CONNECTCODE.3 \
+ CURLINFO_LASTSOCKET.3 \
+ CURLINFO_LOCAL_IP.3 \
+ CURLINFO_LOCAL_PORT.3 \
+ CURLINFO_NAMELOOKUP_TIME.3 \
+ CURLINFO_NUM_CONNECTS.3 \
+ CURLINFO_OS_ERRNO.3 \
+ CURLINFO_PRETRANSFER_TIME.3 \
+ CURLINFO_PRIMARY_IP.3 \
+ CURLINFO_PRIMARY_PORT.3 \
+ CURLINFO_PRIVATE.3 \
+ CURLINFO_PROXYAUTH_AVAIL.3 \
+ CURLINFO_REDIRECT_COUNT.3 \
+ CURLINFO_REDIRECT_TIME.3 \
+ CURLINFO_REDIRECT_URL.3 \
+ CURLINFO_REQUEST_SIZE.3 \
+ CURLINFO_RESPONSE_CODE.3 \
+ CURLINFO_RTSP_CLIENT_CSEQ.3 \
+ CURLINFO_RTSP_CSEQ_RECV.3 \
+ CURLINFO_RTSP_SERVER_CSEQ.3 \
+ CURLINFO_RTSP_SESSION_ID.3 \
+ CURLINFO_SIZE_DOWNLOAD.3 \
+ CURLINFO_SIZE_UPLOAD.3 \
+ CURLINFO_SPEED_DOWNLOAD.3 \
+ CURLINFO_SPEED_UPLOAD.3 \
+ CURLINFO_SSL_ENGINES.3 \
+ CURLINFO_SSL_VERIFYRESULT.3 \
+ CURLINFO_STARTTRANSFER_TIME.3 \
+ CURLINFO_TLS_SESSION.3 \
+ CURLINFO_TLS_SSL_PTR.3 \
+ CURLINFO_TOTAL_TIME.3 \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 \
+ CURLMOPT_MAXCONNECTS.3 \
+ CURLMOPT_MAX_HOST_CONNECTIONS.3 \
+ CURLMOPT_MAX_PIPELINE_LENGTH.3 \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.3 \
+ CURLMOPT_PIPELINING.3 \
+ CURLMOPT_PIPELINING_SERVER_BL.3 \
+ CURLMOPT_PIPELINING_SITE_BL.3 \
+ CURLMOPT_PUSHDATA.3 \
+ CURLMOPT_PUSHFUNCTION.3 \
+ CURLMOPT_SOCKETDATA.3 \
+ CURLMOPT_SOCKETFUNCTION.3 \
+ CURLMOPT_TIMERDATA.3 \
+ CURLMOPT_TIMERFUNCTION.3 \
+ CURLOPT_ACCEPTTIMEOUT_MS.3 \
+ CURLOPT_ACCEPT_ENCODING.3 \
+ CURLOPT_ADDRESS_SCOPE.3 \
+ CURLOPT_APPEND.3 \
+ CURLOPT_AUTOREFERER.3 \
+ CURLOPT_BUFFERSIZE.3 \
+ CURLOPT_CAINFO.3 \
+ CURLOPT_CAPATH.3 \
+ CURLOPT_CERTINFO.3 \
+ CURLOPT_CHUNK_BGN_FUNCTION.3 \
+ CURLOPT_CHUNK_DATA.3 \
+ CURLOPT_CHUNK_END_FUNCTION.3 \
+ CURLOPT_CLOSESOCKETDATA.3 \
+ CURLOPT_CLOSESOCKETFUNCTION.3 \
+ CURLOPT_CONNECTTIMEOUT.3 \
+ CURLOPT_CONNECTTIMEOUT_MS.3 \
+ CURLOPT_CONNECT_ONLY.3 \
+ CURLOPT_CONNECT_TO.3 \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.3 \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.3 \
+ CURLOPT_COOKIE.3 \
+ CURLOPT_COOKIEFILE.3 \
+ CURLOPT_COOKIEJAR.3 \
+ CURLOPT_COOKIELIST.3 \
+ CURLOPT_COOKIESESSION.3 \
+ CURLOPT_COPYPOSTFIELDS.3 \
+ CURLOPT_CRLF.3 \
+ CURLOPT_CRLFILE.3 \
+ CURLOPT_CUSTOMREQUEST.3 \
+ CURLOPT_DEBUGDATA.3 \
+ CURLOPT_DEBUGFUNCTION.3 \
+ CURLOPT_DEFAULT_PROTOCOL.3 \
+ CURLOPT_DIRLISTONLY.3 \
+ CURLOPT_DNS_CACHE_TIMEOUT.3 \
+ CURLOPT_DNS_INTERFACE.3 \
+ CURLOPT_DNS_LOCAL_IP4.3 \
+ CURLOPT_DNS_LOCAL_IP6.3 \
+ CURLOPT_DNS_SERVERS.3 \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.3 \
+ CURLOPT_EGDSOCKET.3 \
+ CURLOPT_ERRORBUFFER.3 \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.3 \
+ CURLOPT_FAILONERROR.3 \
+ CURLOPT_FILETIME.3 \
+ CURLOPT_FNMATCH_DATA.3 \
+ CURLOPT_FNMATCH_FUNCTION.3 \
+ CURLOPT_FOLLOWLOCATION.3 \
+ CURLOPT_FORBID_REUSE.3 \
+ CURLOPT_FRESH_CONNECT.3 \
+ CURLOPT_FTPPORT.3 \
+ CURLOPT_FTPSSLAUTH.3 \
+ CURLOPT_FTP_ACCOUNT.3 \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.3 \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.3 \
+ CURLOPT_FTP_FILEMETHOD.3 \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.3 \
+ CURLOPT_FTP_SKIP_PASV_IP.3 \
+ CURLOPT_FTP_SSL_CCC.3 \
+ CURLOPT_FTP_USE_EPRT.3 \
+ CURLOPT_FTP_USE_EPSV.3 \
+ CURLOPT_FTP_USE_PRET.3 \
+ CURLOPT_GSSAPI_DELEGATION.3 \
+ CURLOPT_HEADER.3 \
+ CURLOPT_HEADERDATA.3 \
+ CURLOPT_HEADERFUNCTION.3 \
+ CURLOPT_HEADEROPT.3 \
+ CURLOPT_HTTP200ALIASES.3 \
+ CURLOPT_HTTPAUTH.3 \
+ CURLOPT_HTTPGET.3 \
+ CURLOPT_HTTPHEADER.3 \
+ CURLOPT_HTTPPOST.3 \
+ CURLOPT_HTTPPROXYTUNNEL.3 \
+ CURLOPT_HTTP_CONTENT_DECODING.3 \
+ CURLOPT_HTTP_TRANSFER_DECODING.3 \
+ CURLOPT_HTTP_VERSION.3 \
+ CURLOPT_IGNORE_CONTENT_LENGTH.3 \
+ CURLOPT_INFILESIZE.3 \
+ CURLOPT_INFILESIZE_LARGE.3 \
+ CURLOPT_INTERFACE.3 \
+ CURLOPT_INTERLEAVEDATA.3 \
+ CURLOPT_INTERLEAVEFUNCTION.3 \
+ CURLOPT_IOCTLDATA.3 \
+ CURLOPT_IOCTLFUNCTION.3 \
+ CURLOPT_IPRESOLVE.3 \
+ CURLOPT_ISSUERCERT.3 \
+ CURLOPT_KEYPASSWD.3 \
+ CURLOPT_KRBLEVEL.3 \
+ CURLOPT_LOCALPORT.3 \
+ CURLOPT_LOCALPORTRANGE.3 \
+ CURLOPT_LOGIN_OPTIONS.3 \
+ CURLOPT_LOW_SPEED_LIMIT.3 \
+ CURLOPT_LOW_SPEED_TIME.3 \
+ CURLOPT_MAIL_AUTH.3 \
+ CURLOPT_MAIL_FROM.3 \
+ CURLOPT_MAIL_RCPT.3 \
+ CURLOPT_MAXCONNECTS.3 \
+ CURLOPT_MAXFILESIZE.3 \
+ CURLOPT_MAXFILESIZE_LARGE.3 \
+ CURLOPT_MAXREDIRS.3 \
+ CURLOPT_MAX_RECV_SPEED_LARGE.3 \
+ CURLOPT_MAX_SEND_SPEED_LARGE.3 \
+ CURLOPT_NETRC.3 \
+ CURLOPT_NETRC_FILE.3 \
+ CURLOPT_NEW_DIRECTORY_PERMS.3 \
+ CURLOPT_NEW_FILE_PERMS.3 \
+ CURLOPT_NOBODY.3 \
+ CURLOPT_NOPROGRESS.3 \
+ CURLOPT_NOPROXY.3 \
+ CURLOPT_NOSIGNAL.3 \
+ CURLOPT_OPENSOCKETDATA.3 \
+ CURLOPT_OPENSOCKETFUNCTION.3 \
+ CURLOPT_PASSWORD.3 \
+ CURLOPT_PATH_AS_IS.3 \
+ CURLOPT_PINNEDPUBLICKEY.3 \
+ CURLOPT_PIPEWAIT.3 \
+ CURLOPT_PORT.3 \
+ CURLOPT_POST.3 \
+ CURLOPT_POSTFIELDS.3 \
+ CURLOPT_POSTFIELDSIZE.3 \
+ CURLOPT_POSTFIELDSIZE_LARGE.3 \
+ CURLOPT_POSTQUOTE.3 \
+ CURLOPT_POSTREDIR.3 \
+ CURLOPT_PREQUOTE.3 \
+ CURLOPT_PRIVATE.3 \
+ CURLOPT_PROGRESSDATA.3 \
+ CURLOPT_PROGRESSFUNCTION.3 \
+ CURLOPT_PROTOCOLS.3 \
+ CURLOPT_PROXY.3 \
+ CURLOPT_PROXYAUTH.3 \
+ CURLOPT_PROXYHEADER.3 \
+ CURLOPT_PROXYPASSWORD.3 \
+ CURLOPT_PROXYPORT.3 \
+ CURLOPT_PROXYTYPE.3 \
+ CURLOPT_PROXYUSERNAME.3 \
+ CURLOPT_PROXYUSERPWD.3 \
+ CURLOPT_PROXY_SERVICE_NAME.3 \
+ CURLOPT_PROXY_TRANSFER_MODE.3 \
+ CURLOPT_PUT.3 \
+ CURLOPT_QUOTE.3 \
+ CURLOPT_RANDOM_FILE.3 \
+ CURLOPT_RANGE.3 \
+ CURLOPT_READDATA.3 \
+ CURLOPT_READFUNCTION.3 \
+ CURLOPT_REDIR_PROTOCOLS.3 \
+ CURLOPT_REFERER.3 \
+ CURLOPT_RESOLVE.3 \
+ CURLOPT_RESUME_FROM.3 \
+ CURLOPT_RESUME_FROM_LARGE.3 \
+ CURLOPT_RTSP_CLIENT_CSEQ.3 \
+ CURLOPT_RTSP_REQUEST.3 \
+ CURLOPT_RTSP_SERVER_CSEQ.3 \
+ CURLOPT_RTSP_SESSION_ID.3 \
+ CURLOPT_RTSP_STREAM_URI.3 \
+ CURLOPT_RTSP_TRANSPORT.3 \
+ CURLOPT_SASL_IR.3 \
+ CURLOPT_SEEKDATA.3 \
+ CURLOPT_SEEKFUNCTION.3 \
+ CURLOPT_SERVICE_NAME.3 \
+ CURLOPT_SHARE.3 \
+ CURLOPT_SOCKOPTDATA.3 \
+ CURLOPT_SOCKOPTFUNCTION.3 \
+ CURLOPT_SOCKS5_GSSAPI_NEC.3 \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.3 \
+ CURLOPT_SSH_AUTH_TYPES.3 \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 \
+ CURLOPT_SSH_KEYDATA.3 \
+ CURLOPT_SSH_KEYFUNCTION.3 \
+ CURLOPT_SSH_KNOWNHOSTS.3 \
+ CURLOPT_SSH_PRIVATE_KEYFILE.3 \
+ CURLOPT_SSH_PUBLIC_KEYFILE.3 \
+ CURLOPT_SSLCERT.3 \
+ CURLOPT_SSLCERTTYPE.3 \
+ CURLOPT_SSLENGINE.3 \
+ CURLOPT_SSLENGINE_DEFAULT.3 \
+ CURLOPT_SSLKEY.3 \
+ CURLOPT_SSLKEYTYPE.3 \
+ CURLOPT_SSLVERSION.3 \
+ CURLOPT_SSL_CIPHER_LIST.3 \
+ CURLOPT_SSL_CTX_DATA.3 \
+ CURLOPT_SSL_CTX_FUNCTION.3 \
+ CURLOPT_SSL_ENABLE_ALPN.3 \
+ CURLOPT_SSL_ENABLE_NPN.3 \
+ CURLOPT_SSL_FALSESTART.3 \
+ CURLOPT_SSL_OPTIONS.3 \
+ CURLOPT_SSL_SESSIONID_CACHE.3 \
+ CURLOPT_SSL_VERIFYHOST.3 \
+ CURLOPT_SSL_VERIFYPEER.3 \
+ CURLOPT_SSL_VERIFYSTATUS.3 \
+ CURLOPT_STDERR.3 \
+ CURLOPT_STREAM_DEPENDS.3 \
+ CURLOPT_STREAM_DEPENDS_E.3 \
+ CURLOPT_STREAM_WEIGHT.3 \
+ CURLOPT_TCP_FASTOPEN.3 \
+ CURLOPT_TCP_KEEPALIVE.3 \
+ CURLOPT_TCP_KEEPIDLE.3 \
+ CURLOPT_TCP_KEEPINTVL.3 \
+ CURLOPT_TCP_NODELAY.3 \
+ CURLOPT_TELNETOPTIONS.3 \
+ CURLOPT_TFTP_BLKSIZE.3 \
+ CURLOPT_TFTP_NO_OPTIONS.3 \
+ CURLOPT_TIMECONDITION.3 \
+ CURLOPT_TIMEOUT.3 \
+ CURLOPT_TIMEOUT_MS.3 \
+ CURLOPT_TIMEVALUE.3 \
+ CURLOPT_TLSAUTH_PASSWORD.3 \
+ CURLOPT_TLSAUTH_TYPE.3 \
+ CURLOPT_TLSAUTH_USERNAME.3 \
+ CURLOPT_TRANSFERTEXT.3 \
+ CURLOPT_TRANSFER_ENCODING.3 \
+ CURLOPT_UNIX_SOCKET_PATH.3 \
+ CURLOPT_UNRESTRICTED_AUTH.3 \
+ CURLOPT_UPLOAD.3 \
+ CURLOPT_URL.3 \
+ CURLOPT_USERAGENT.3 \
+ CURLOPT_USERNAME.3 \
+ CURLOPT_USERPWD.3 \
+ CURLOPT_USE_SSL.3 \
+ CURLOPT_VERBOSE.3 \
+ CURLOPT_WILDCARDMATCH.3 \
+ CURLOPT_WRITEDATA.3 \
+ CURLOPT_WRITEFUNCTION.3 \
+ CURLOPT_XFERINFODATA.3 \
+ CURLOPT_XFERINFOFUNCTION.3 \
+ CURLOPT_XOAUTH2_BEARER.3
-HTMLPAGES = CURLOPT_ACCEPT_ENCODING.html CURLOPT_ACCEPTTIMEOUT_MS.html \
- CURLOPT_ADDRESS_SCOPE.html CURLOPT_APPEND.html \
- CURLOPT_AUTOREFERER.html CURLOPT_BUFFERSIZE.html CURLOPT_CAINFO.html \
- CURLOPT_CAPATH.html CURLOPT_CERTINFO.html \
- CURLOPT_CHUNK_BGN_FUNCTION.html CURLOPT_CHUNK_DATA.html \
- CURLOPT_CHUNK_END_FUNCTION.html CURLOPT_CLOSESOCKETDATA.html \
- CURLOPT_CLOSESOCKETFUNCTION.html CURLOPT_CONNECT_ONLY.html \
- CURLOPT_CONNECTTIMEOUT.html CURLOPT_CONNECTTIMEOUT_MS.html \
- CURLOPT_CONV_FROM_NETWORK_FUNCTION.html \
- CURLOPT_CONV_FROM_UTF8_FUNCTION.html \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.html CURLOPT_COOKIE.html \
- CURLOPT_COOKIEFILE.html CURLOPT_COOKIEJAR.html CURLOPT_COOKIELIST.html \
- CURLOPT_COOKIESESSION.html CURLOPT_COPYPOSTFIELDS.html \
- CURLOPT_CRLF.html CURLOPT_CRLFILE.html CURLOPT_CUSTOMREQUEST.html \
- CURLOPT_DEBUGDATA.html CURLOPT_DEBUGFUNCTION.html \
- CURLOPT_DIRLISTONLY.html CURLOPT_DNS_CACHE_TIMEOUT.html \
- CURLOPT_DNS_INTERFACE.html CURLOPT_DNS_LOCAL_IP4.html \
- CURLOPT_DNS_LOCAL_IP6.html CURLOPT_DNS_SERVERS.html \
- CURLOPT_DNS_USE_GLOBAL_CACHE.html CURLOPT_EGDSOCKET.html \
- CURLOPT_ERRORBUFFER.html CURLOPT_EXPECT_100_TIMEOUT_MS.html \
- CURLOPT_FAILONERROR.html CURLOPT_FILETIME.html \
- CURLOPT_FNMATCH_DATA.html CURLOPT_FNMATCH_FUNCTION.html \
- CURLOPT_FOLLOWLOCATION.html CURLOPT_FORBID_REUSE.html \
- CURLOPT_FRESH_CONNECT.html CURLOPT_FTP_ACCOUNT.html \
- CURLOPT_FTP_ALTERNATIVE_TO_USER.html \
- CURLOPT_FTP_CREATE_MISSING_DIRS.html CURLOPT_FTP_FILEMETHOD.html \
- CURLOPT_FTPPORT.html CURLOPT_FTP_RESPONSE_TIMEOUT.html \
- CURLOPT_FTP_SKIP_PASV_IP.html CURLOPT_FTPSSLAUTH.html \
- CURLOPT_FTP_SSL_CCC.html CURLOPT_FTP_USE_EPRT.html \
- CURLOPT_FTP_USE_EPSV.html CURLOPT_FTP_USE_PRET.html \
- CURLOPT_GSSAPI_DELEGATION.html CURLOPT_HEADER.html \
- CURLOPT_HEADERDATA.html CURLOPT_HEADERFUNCTION.html \
- CURLOPT_HEADEROPT.html CURLOPT_HTTP200ALIASES.html \
- CURLOPT_HTTPAUTH.html CURLOPT_HTTP_CONTENT_DECODING.html \
- CURLOPT_HTTPGET.html CURLOPT_HTTPHEADER.html CURLOPT_HTTPPOST.html \
- CURLOPT_HTTPPROXYTUNNEL.html CURLOPT_HTTP_TRANSFER_DECODING.html \
- CURLOPT_HTTP_VERSION.html CURLOPT_IGNORE_CONTENT_LENGTH.html \
- CURLOPT_INFILESIZE.html CURLOPT_INFILESIZE_LARGE.html \
- CURLOPT_INTERFACE.html CURLOPT_INTERLEAVEDATA.html \
- CURLOPT_INTERLEAVEFUNCTION.html CURLOPT_IOCTLDATA.html \
- CURLOPT_IOCTLFUNCTION.html CURLOPT_IPRESOLVE.html \
- CURLOPT_ISSUERCERT.html CURLOPT_KEYPASSWD.html CURLOPT_KRBLEVEL.html \
- CURLOPT_LOCALPORT.html CURLOPT_LOCALPORTRANGE.html \
- CURLOPT_LOGIN_OPTIONS.html CURLOPT_LOW_SPEED_LIMIT.html \
- CURLOPT_LOW_SPEED_TIME.html CURLOPT_MAIL_AUTH.html \
- CURLOPT_MAIL_FROM.html CURLOPT_MAIL_RCPT.html CURLOPT_MAXCONNECTS.html \
- CURLOPT_MAXFILESIZE.html CURLOPT_MAXFILESIZE_LARGE.html \
- CURLOPT_MAX_RECV_SPEED_LARGE.html CURLOPT_MAXREDIRS.html \
- CURLOPT_MAX_SEND_SPEED_LARGE.html CURLOPT_NETRC.html \
- CURLOPT_NETRC_FILE.html CURLOPT_NEW_DIRECTORY_PERMS.html \
- CURLOPT_NEW_FILE_PERMS.html CURLOPT_NOBODY.html \
- CURLOPT_NOPROGRESS.html CURLOPT_NOPROXY.html CURLOPT_NOSIGNAL.html \
- CURLOPT_OPENSOCKETDATA.html CURLOPT_OPENSOCKETFUNCTION.html \
- CURLOPT_PASSWORD.html CURLOPT_PINNEDPUBLICKEY.html CURLOPT_PORT.html \
- CURLOPT_POST.html CURLOPT_POSTFIELDS.html CURLOPT_POSTFIELDSIZE.html \
- CURLOPT_POSTFIELDSIZE_LARGE.html CURLOPT_POSTQUOTE.html \
- CURLOPT_POSTREDIR.html CURLOPT_PREQUOTE.html CURLOPT_PRIVATE.html \
- CURLOPT_PROGRESSDATA.html CURLOPT_PROGRESSFUNCTION.html \
- CURLOPT_PROTOCOLS.html CURLOPT_PROXY.html CURLOPT_PROXYAUTH.html \
- CURLOPT_PROXYHEADER.html CURLOPT_PROXYPASSWORD.html \
- CURLOPT_PROXYPORT.html CURLOPT_PROXY_TRANSFER_MODE.html \
- CURLOPT_PROXYTYPE.html CURLOPT_PROXYUSERNAME.html \
- CURLOPT_PROXYUSERPWD.html CURLOPT_PUT.html CURLOPT_QUOTE.html \
- CURLOPT_RANDOM_FILE.html CURLOPT_RANGE.html CURLOPT_READDATA.html \
- CURLOPT_READFUNCTION.html CURLOPT_REDIR_PROTOCOLS.html \
- CURLOPT_REFERER.html CURLOPT_RESOLVE.html CURLOPT_RESUME_FROM.html \
- CURLOPT_RESUME_FROM_LARGE.html CURLOPT_RTSP_CLIENT_CSEQ.html \
- CURLOPT_RTSP_REQUEST.html CURLOPT_RTSP_SERVER_CSEQ.html \
- CURLOPT_RTSP_SESSION_ID.html CURLOPT_RTSP_STREAM_URI.html \
- CURLOPT_RTSP_TRANSPORT.html CURLOPT_SASL_IR.html CURLOPT_SEEKDATA.html \
- CURLOPT_SEEKFUNCTION.html CURLOPT_SHARE.html CURLOPT_SOCKOPTDATA.html \
- CURLOPT_SOCKOPTFUNCTION.html CURLOPT_SOCKS5_GSSAPI_NEC.html \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.html CURLOPT_SSH_AUTH_TYPES.html \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html CURLOPT_SSH_KEYDATA.html \
- CURLOPT_SSH_KEYFUNCTION.html CURLOPT_SSH_KNOWNHOSTS.html \
- CURLOPT_SSH_PRIVATE_KEYFILE.html CURLOPT_SSH_PUBLIC_KEYFILE.html \
- CURLOPT_SSLCERT.html CURLOPT_SSLCERTTYPE.html \
- CURLOPT_SSL_CIPHER_LIST.html CURLOPT_SSL_CTX_DATA.html \
- CURLOPT_SSL_CTX_FUNCTION.html CURLOPT_SSL_ENABLE_ALPN.html \
- CURLOPT_SSL_ENABLE_NPN.html CURLOPT_SSLENGINE.html \
- CURLOPT_SSLENGINE_DEFAULT.html CURLOPT_SSL_FALSESTART.html \
- CURLOPT_SSLKEY.html CURLOPT_SSLKEYTYPE.html CURLOPT_SSL_OPTIONS.html \
- CURLOPT_SSL_SESSIONID_CACHE.html CURLOPT_SSL_VERIFYHOST.html \
- CURLOPT_SSL_VERIFYPEER.html CURLOPT_SSL_VERIFYSTATUS.html \
- CURLOPT_SSLVERSION.html CURLOPT_STDERR.html CURLOPT_TCP_KEEPALIVE.html \
- CURLOPT_TCP_KEEPIDLE.html CURLOPT_TCP_KEEPINTVL.html \
- CURLOPT_TCP_NODELAY.html CURLOPT_TELNETOPTIONS.html \
- CURLOPT_TFTP_BLKSIZE.html CURLOPT_TIMECONDITION.html \
- CURLOPT_TIMEOUT.html CURLOPT_TIMEOUT_MS.html CURLOPT_TIMEVALUE.html \
- CURLOPT_TLSAUTH_PASSWORD.html CURLOPT_TLSAUTH_TYPE.html \
- CURLOPT_TLSAUTH_USERNAME.html CURLOPT_TRANSFER_ENCODING.html \
- CURLOPT_TRANSFERTEXT.html CURLOPT_UNRESTRICTED_AUTH.html \
- CURLOPT_UPLOAD.html CURLOPT_URL.html CURLOPT_USERAGENT.html \
- CURLOPT_USERNAME.html CURLOPT_USERPWD.html CURLOPT_USE_SSL.html \
- CURLOPT_VERBOSE.html CURLOPT_WILDCARDMATCH.html CURLOPT_WRITEDATA.html \
- CURLOPT_WRITEFUNCTION.html CURLOPT_XFERINFODATA.html \
- CURLOPT_XFERINFOFUNCTION.html CURLOPT_XOAUTH2_BEARER.html \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html CURLMOPT_MAXCONNECTS.html \
- CURLMOPT_MAX_HOST_CONNECTIONS.html CURLMOPT_MAX_PIPELINE_LENGTH.html \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.html CURLMOPT_PIPELINING.html \
- CURLMOPT_PIPELINING_SERVER_BL.html CURLMOPT_PIPELINING_SITE_BL.html \
- CURLMOPT_SOCKETDATA.html CURLMOPT_SOCKETFUNCTION.html \
- CURLMOPT_TIMERDATA.html CURLMOPT_TIMERFUNCTION.html \
- CURLOPT_UNIX_SOCKET_PATH.html CURLOPT_PATH_AS_IS.html \
- CURLOPT_PROXY_SERVICE_NAME.html CURLOPT_SERVICE_NAME.html \
- CURLOPT_PIPEWAIT.html
+HTMLPAGES = \
+ CURLINFO_ACTIVESOCKET.html \
+ CURLINFO_APPCONNECT_TIME.html \
+ CURLINFO_CERTINFO.html \
+ CURLINFO_CONDITION_UNMET.html \
+ CURLINFO_CONNECT_TIME.html \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.html \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.html \
+ CURLINFO_CONTENT_TYPE.html \
+ CURLINFO_COOKIELIST.html \
+ CURLINFO_EFFECTIVE_URL.html \
+ CURLINFO_FILETIME.html \
+ CURLINFO_FTP_ENTRY_PATH.html \
+ CURLINFO_HEADER_SIZE.html \
+ CURLINFO_HTTPAUTH_AVAIL.html \
+ CURLINFO_HTTP_CONNECTCODE.html \
+ CURLINFO_LASTSOCKET.html \
+ CURLINFO_LOCAL_IP.html \
+ CURLINFO_LOCAL_PORT.html \
+ CURLINFO_NAMELOOKUP_TIME.html \
+ CURLINFO_NUM_CONNECTS.html \
+ CURLINFO_OS_ERRNO.html \
+ CURLINFO_PRETRANSFER_TIME.html \
+ CURLINFO_PRIMARY_IP.html \
+ CURLINFO_PRIMARY_PORT.html \
+ CURLINFO_PRIVATE.html \
+ CURLINFO_PROXYAUTH_AVAIL.html \
+ CURLINFO_REDIRECT_COUNT.html \
+ CURLINFO_REDIRECT_TIME.html \
+ CURLINFO_REDIRECT_URL.html \
+ CURLINFO_REQUEST_SIZE.html \
+ CURLINFO_RESPONSE_CODE.html \
+ CURLINFO_RTSP_CLIENT_CSEQ.html \
+ CURLINFO_RTSP_CSEQ_RECV.html \
+ CURLINFO_RTSP_SERVER_CSEQ.html \
+ CURLINFO_RTSP_SESSION_ID.html \
+ CURLINFO_SIZE_DOWNLOAD.html \
+ CURLINFO_SIZE_UPLOAD.html \
+ CURLINFO_SPEED_DOWNLOAD.html \
+ CURLINFO_SPEED_UPLOAD.html \
+ CURLINFO_SSL_ENGINES.html \
+ CURLINFO_SSL_VERIFYRESULT.html \
+ CURLINFO_STARTTRANSFER_TIME.html \
+ CURLINFO_TLS_SESSION.html \
+ CURLINFO_TLS_SSL_PTR.html \
+ CURLINFO_TOTAL_TIME.html \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.html \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.html \
+ CURLMOPT_MAXCONNECTS.html \
+ CURLMOPT_MAX_HOST_CONNECTIONS.html \
+ CURLMOPT_MAX_PIPELINE_LENGTH.html \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.html \
+ CURLMOPT_PIPELINING.html \
+ CURLMOPT_PIPELINING_SERVER_BL.html \
+ CURLMOPT_PIPELINING_SITE_BL.html \
+ CURLMOPT_PUSHDATA.html \
+ CURLMOPT_PUSHFUNCTION.html \
+ CURLMOPT_SOCKETDATA.html \
+ CURLMOPT_SOCKETFUNCTION.html \
+ CURLMOPT_TIMERDATA.html \
+ CURLMOPT_TIMERFUNCTION.html \
+ CURLOPT_ACCEPTTIMEOUT_MS.html \
+ CURLOPT_ACCEPT_ENCODING.html \
+ CURLOPT_ADDRESS_SCOPE.html \
+ CURLOPT_APPEND.html \
+ CURLOPT_AUTOREFERER.html \
+ CURLOPT_BUFFERSIZE.html \
+ CURLOPT_CAINFO.html \
+ CURLOPT_CAPATH.html \
+ CURLOPT_CERTINFO.html \
+ CURLOPT_CHUNK_BGN_FUNCTION.html \
+ CURLOPT_CHUNK_DATA.html \
+ CURLOPT_CHUNK_END_FUNCTION.html \
+ CURLOPT_CLOSESOCKETDATA.html \
+ CURLOPT_CLOSESOCKETFUNCTION.html \
+ CURLOPT_CONNECTTIMEOUT.html \
+ CURLOPT_CONNECTTIMEOUT_MS.html \
+ CURLOPT_CONNECT_ONLY.html \
+ CURLOPT_CONNECT_TO.html \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.html \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.html \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.html \
+ CURLOPT_COOKIE.html \
+ CURLOPT_COOKIEFILE.html \
+ CURLOPT_COOKIEJAR.html \
+ CURLOPT_COOKIELIST.html \
+ CURLOPT_COOKIESESSION.html \
+ CURLOPT_COPYPOSTFIELDS.html \
+ CURLOPT_CRLF.html \
+ CURLOPT_CRLFILE.html \
+ CURLOPT_CUSTOMREQUEST.html \
+ CURLOPT_DEBUGDATA.html \
+ CURLOPT_DEBUGFUNCTION.html \
+ CURLOPT_DEFAULT_PROTOCOL.html \
+ CURLOPT_DIRLISTONLY.html \
+ CURLOPT_DNS_CACHE_TIMEOUT.html \
+ CURLOPT_DNS_INTERFACE.html \
+ CURLOPT_DNS_LOCAL_IP4.html \
+ CURLOPT_DNS_LOCAL_IP6.html \
+ CURLOPT_DNS_SERVERS.html \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.html \
+ CURLOPT_EGDSOCKET.html \
+ CURLOPT_ERRORBUFFER.html \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.html \
+ CURLOPT_FAILONERROR.html \
+ CURLOPT_FILETIME.html \
+ CURLOPT_FNMATCH_DATA.html \
+ CURLOPT_FNMATCH_FUNCTION.html \
+ CURLOPT_FOLLOWLOCATION.html \
+ CURLOPT_FORBID_REUSE.html \
+ CURLOPT_FRESH_CONNECT.html \
+ CURLOPT_FTPPORT.html \
+ CURLOPT_FTPSSLAUTH.html \
+ CURLOPT_FTP_ACCOUNT.html \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.html \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.html \
+ CURLOPT_FTP_FILEMETHOD.html \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.html \
+ CURLOPT_FTP_SKIP_PASV_IP.html \
+ CURLOPT_FTP_SSL_CCC.html \
+ CURLOPT_FTP_USE_EPRT.html \
+ CURLOPT_FTP_USE_EPSV.html \
+ CURLOPT_FTP_USE_PRET.html \
+ CURLOPT_GSSAPI_DELEGATION.html \
+ CURLOPT_HEADER.html \
+ CURLOPT_HEADERDATA.html \
+ CURLOPT_HEADERFUNCTION.html \
+ CURLOPT_HEADEROPT.html \
+ CURLOPT_HTTP200ALIASES.html \
+ CURLOPT_HTTPAUTH.html \
+ CURLOPT_HTTPGET.html \
+ CURLOPT_HTTPHEADER.html \
+ CURLOPT_HTTPPOST.html \
+ CURLOPT_HTTPPROXYTUNNEL.html \
+ CURLOPT_HTTP_CONTENT_DECODING.html \
+ CURLOPT_HTTP_TRANSFER_DECODING.html \
+ CURLOPT_HTTP_VERSION.html \
+ CURLOPT_IGNORE_CONTENT_LENGTH.html \
+ CURLOPT_INFILESIZE.html \
+ CURLOPT_INFILESIZE_LARGE.html \
+ CURLOPT_INTERFACE.html \
+ CURLOPT_INTERLEAVEDATA.html \
+ CURLOPT_INTERLEAVEFUNCTION.html \
+ CURLOPT_IOCTLDATA.html \
+ CURLOPT_IOCTLFUNCTION.html \
+ CURLOPT_IPRESOLVE.html \
+ CURLOPT_ISSUERCERT.html \
+ CURLOPT_KEYPASSWD.html \
+ CURLOPT_KRBLEVEL.html \
+ CURLOPT_LOCALPORT.html \
+ CURLOPT_LOCALPORTRANGE.html \
+ CURLOPT_LOGIN_OPTIONS.html \
+ CURLOPT_LOW_SPEED_LIMIT.html \
+ CURLOPT_LOW_SPEED_TIME.html \
+ CURLOPT_MAIL_AUTH.html \
+ CURLOPT_MAIL_FROM.html \
+ CURLOPT_MAIL_RCPT.html \
+ CURLOPT_MAXCONNECTS.html \
+ CURLOPT_MAXFILESIZE.html \
+ CURLOPT_MAXFILESIZE_LARGE.html \
+ CURLOPT_MAXREDIRS.html \
+ CURLOPT_MAX_RECV_SPEED_LARGE.html \
+ CURLOPT_MAX_SEND_SPEED_LARGE.html \
+ CURLOPT_NETRC.html \
+ CURLOPT_NETRC_FILE.html \
+ CURLOPT_NEW_DIRECTORY_PERMS.html \
+ CURLOPT_NEW_FILE_PERMS.html \
+ CURLOPT_NOBODY.html \
+ CURLOPT_NOPROGRESS.html \
+ CURLOPT_NOPROXY.html \
+ CURLOPT_NOSIGNAL.html \
+ CURLOPT_OPENSOCKETDATA.html \
+ CURLOPT_OPENSOCKETFUNCTION.html \
+ CURLOPT_PASSWORD.html \
+ CURLOPT_PATH_AS_IS.html \
+ CURLOPT_PINNEDPUBLICKEY.html \
+ CURLOPT_PIPEWAIT.html \
+ CURLOPT_PORT.html \
+ CURLOPT_POST.html \
+ CURLOPT_POSTFIELDS.html \
+ CURLOPT_POSTFIELDSIZE.html \
+ CURLOPT_POSTFIELDSIZE_LARGE.html \
+ CURLOPT_POSTQUOTE.html \
+ CURLOPT_POSTREDIR.html \
+ CURLOPT_PREQUOTE.html \
+ CURLOPT_PRIVATE.html \
+ CURLOPT_PROGRESSDATA.html \
+ CURLOPT_PROGRESSFUNCTION.html \
+ CURLOPT_PROTOCOLS.html \
+ CURLOPT_PROXY.html \
+ CURLOPT_PROXYAUTH.html \
+ CURLOPT_PROXYHEADER.html \
+ CURLOPT_PROXYPASSWORD.html \
+ CURLOPT_PROXYPORT.html \
+ CURLOPT_PROXYTYPE.html \
+ CURLOPT_PROXYUSERNAME.html \
+ CURLOPT_PROXYUSERPWD.html \
+ CURLOPT_PROXY_SERVICE_NAME.html \
+ CURLOPT_PROXY_TRANSFER_MODE.html \
+ CURLOPT_PUT.html \
+ CURLOPT_QUOTE.html \
+ CURLOPT_RANDOM_FILE.html \
+ CURLOPT_RANGE.html \
+ CURLOPT_READDATA.html \
+ CURLOPT_READFUNCTION.html \
+ CURLOPT_REDIR_PROTOCOLS.html \
+ CURLOPT_REFERER.html \
+ CURLOPT_RESOLVE.html \
+ CURLOPT_RESUME_FROM.html \
+ CURLOPT_RESUME_FROM_LARGE.html \
+ CURLOPT_RTSP_CLIENT_CSEQ.html \
+ CURLOPT_RTSP_REQUEST.html \
+ CURLOPT_RTSP_SERVER_CSEQ.html \
+ CURLOPT_RTSP_SESSION_ID.html \
+ CURLOPT_RTSP_STREAM_URI.html \
+ CURLOPT_RTSP_TRANSPORT.html \
+ CURLOPT_SASL_IR.html \
+ CURLOPT_SEEKDATA.html \
+ CURLOPT_SEEKFUNCTION.html \
+ CURLOPT_SERVICE_NAME.html \
+ CURLOPT_SHARE.html \
+ CURLOPT_SOCKOPTDATA.html \
+ CURLOPT_SOCKOPTFUNCTION.html \
+ CURLOPT_SOCKS5_GSSAPI_NEC.html \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.html \
+ CURLOPT_SSH_AUTH_TYPES.html \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.html \
+ CURLOPT_SSH_KEYDATA.html \
+ CURLOPT_SSH_KEYFUNCTION.html \
+ CURLOPT_SSH_KNOWNHOSTS.html \
+ CURLOPT_SSH_PRIVATE_KEYFILE.html \
+ CURLOPT_SSH_PUBLIC_KEYFILE.html \
+ CURLOPT_SSLCERT.html \
+ CURLOPT_SSLCERTTYPE.html \
+ CURLOPT_SSLENGINE.html \
+ CURLOPT_SSLENGINE_DEFAULT.html \
+ CURLOPT_SSLKEY.html \
+ CURLOPT_SSLKEYTYPE.html \
+ CURLOPT_SSLVERSION.html \
+ CURLOPT_SSL_CIPHER_LIST.html \
+ CURLOPT_SSL_CTX_DATA.html \
+ CURLOPT_SSL_CTX_FUNCTION.html \
+ CURLOPT_SSL_ENABLE_ALPN.html \
+ CURLOPT_SSL_ENABLE_NPN.html \
+ CURLOPT_SSL_FALSESTART.html \
+ CURLOPT_SSL_OPTIONS.html \
+ CURLOPT_SSL_SESSIONID_CACHE.html \
+ CURLOPT_SSL_VERIFYHOST.html \
+ CURLOPT_SSL_VERIFYPEER.html \
+ CURLOPT_SSL_VERIFYSTATUS.html \
+ CURLOPT_STDERR.html \
+ CURLOPT_STREAM_DEPENDS.html \
+ CURLOPT_STREAM_DEPENDS_E.html \
+ CURLOPT_STREAM_WEIGHT.html \
+ CURLOPT_TCP_FASTOPEN.html \
+ CURLOPT_TCP_KEEPALIVE.html \
+ CURLOPT_TCP_KEEPIDLE.html \
+ CURLOPT_TCP_KEEPINTVL.html \
+ CURLOPT_TCP_NODELAY.html \
+ CURLOPT_TELNETOPTIONS.html \
+ CURLOPT_TFTP_BLKSIZE.html \
+ CURLOPT_TFTP_NO_OPTIONS.html \
+ CURLOPT_TIMECONDITION.html \
+ CURLOPT_TIMEOUT.html \
+ CURLOPT_TIMEOUT_MS.html \
+ CURLOPT_TIMEVALUE.html \
+ CURLOPT_TLSAUTH_PASSWORD.html \
+ CURLOPT_TLSAUTH_TYPE.html \
+ CURLOPT_TLSAUTH_USERNAME.html \
+ CURLOPT_TRANSFERTEXT.html \
+ CURLOPT_TRANSFER_ENCODING.html \
+ CURLOPT_UNIX_SOCKET_PATH.html \
+ CURLOPT_UNRESTRICTED_AUTH.html \
+ CURLOPT_UPLOAD.html \
+ CURLOPT_URL.html \
+ CURLOPT_USERAGENT.html \
+ CURLOPT_USERNAME.html \
+ CURLOPT_USERPWD.html \
+ CURLOPT_USE_SSL.html \
+ CURLOPT_VERBOSE.html \
+ CURLOPT_WILDCARDMATCH.html \
+ CURLOPT_WRITEDATA.html \
+ CURLOPT_WRITEFUNCTION.html \
+ CURLOPT_XFERINFODATA.html \
+ CURLOPT_XFERINFOFUNCTION.html \
+ CURLOPT_XOAUTH2_BEARER.html
-PDFPAGES = CURLOPT_ACCEPT_ENCODING.pdf CURLOPT_ACCEPTTIMEOUT_MS.pdf \
- CURLOPT_ADDRESS_SCOPE.pdf CURLOPT_APPEND.pdf CURLOPT_AUTOREFERER.pdf \
- CURLOPT_BUFFERSIZE.pdf CURLOPT_CAINFO.pdf CURLOPT_CAPATH.pdf \
- CURLOPT_CERTINFO.pdf CURLOPT_CHUNK_BGN_FUNCTION.pdf \
- CURLOPT_CHUNK_DATA.pdf CURLOPT_CHUNK_END_FUNCTION.pdf \
- CURLOPT_CLOSESOCKETDATA.pdf CURLOPT_CLOSESOCKETFUNCTION.pdf \
- CURLOPT_CONNECT_ONLY.pdf CURLOPT_CONNECTTIMEOUT.pdf \
- CURLOPT_CONNECTTIMEOUT_MS.pdf CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf \
- CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf \
- CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf CURLOPT_COOKIE.pdf \
- CURLOPT_COOKIEFILE.pdf CURLOPT_COOKIEJAR.pdf CURLOPT_COOKIELIST.pdf \
- CURLOPT_COOKIESESSION.pdf CURLOPT_COPYPOSTFIELDS.pdf CURLOPT_CRLF.pdf \
- CURLOPT_CRLFILE.pdf CURLOPT_CUSTOMREQUEST.pdf CURLOPT_DEBUGDATA.pdf \
- CURLOPT_DEBUGFUNCTION.pdf CURLOPT_DIRLISTONLY.pdf \
- CURLOPT_DNS_CACHE_TIMEOUT.pdf CURLOPT_DNS_INTERFACE.pdf \
- CURLOPT_DNS_LOCAL_IP4.pdf CURLOPT_DNS_LOCAL_IP6.pdf \
- CURLOPT_DNS_SERVERS.pdf CURLOPT_DNS_USE_GLOBAL_CACHE.pdf \
- CURLOPT_EGDSOCKET.pdf CURLOPT_ERRORBUFFER.pdf \
- CURLOPT_EXPECT_100_TIMEOUT_MS.pdf CURLOPT_FAILONERROR.pdf \
- CURLOPT_FILETIME.pdf CURLOPT_FNMATCH_DATA.pdf \
- CURLOPT_FNMATCH_FUNCTION.pdf CURLOPT_FOLLOWLOCATION.pdf \
- CURLOPT_FORBID_REUSE.pdf CURLOPT_FRESH_CONNECT.pdf \
- CURLOPT_FTP_ACCOUNT.pdf CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf \
- CURLOPT_FTP_CREATE_MISSING_DIRS.pdf CURLOPT_FTP_FILEMETHOD.pdf \
- CURLOPT_FTPPORT.pdf CURLOPT_FTP_RESPONSE_TIMEOUT.pdf \
- CURLOPT_FTP_SKIP_PASV_IP.pdf CURLOPT_FTPSSLAUTH.pdf \
- CURLOPT_FTP_SSL_CCC.pdf CURLOPT_FTP_USE_EPRT.pdf \
- CURLOPT_FTP_USE_EPSV.pdf CURLOPT_FTP_USE_PRET.pdf \
- CURLOPT_GSSAPI_DELEGATION.pdf CURLOPT_HEADER.pdf \
- CURLOPT_HEADERDATA.pdf CURLOPT_HEADERFUNCTION.pdf \
- CURLOPT_HEADEROPT.pdf CURLOPT_HTTP200ALIASES.pdf CURLOPT_HTTPAUTH.pdf \
- CURLOPT_HTTP_CONTENT_DECODING.pdf CURLOPT_HTTPGET.pdf \
- CURLOPT_HTTPHEADER.pdf CURLOPT_HTTPPOST.pdf \
- CURLOPT_HTTPPROXYTUNNEL.pdf CURLOPT_HTTP_TRANSFER_DECODING.pdf \
- CURLOPT_HTTP_VERSION.pdf CURLOPT_IGNORE_CONTENT_LENGTH.pdf \
- CURLOPT_INFILESIZE.pdf CURLOPT_INFILESIZE_LARGE.pdf \
- CURLOPT_INTERFACE.pdf CURLOPT_INTERLEAVEDATA.pdf \
- CURLOPT_INTERLEAVEFUNCTION.pdf CURLOPT_IOCTLDATA.pdf \
- CURLOPT_IOCTLFUNCTION.pdf CURLOPT_IPRESOLVE.pdf CURLOPT_ISSUERCERT.pdf \
- CURLOPT_KEYPASSWD.pdf CURLOPT_KRBLEVEL.pdf CURLOPT_LOCALPORT.pdf \
- CURLOPT_LOCALPORTRANGE.pdf CURLOPT_LOGIN_OPTIONS.pdf \
- CURLOPT_LOW_SPEED_LIMIT.pdf CURLOPT_LOW_SPEED_TIME.pdf \
- CURLOPT_MAIL_AUTH.pdf CURLOPT_MAIL_FROM.pdf CURLOPT_MAIL_RCPT.pdf \
- CURLOPT_MAXCONNECTS.pdf CURLOPT_MAXFILESIZE.pdf \
- CURLOPT_MAXFILESIZE_LARGE.pdf CURLOPT_MAX_RECV_SPEED_LARGE.pdf \
- CURLOPT_MAXREDIRS.pdf CURLOPT_MAX_SEND_SPEED_LARGE.pdf \
- CURLOPT_NETRC.pdf CURLOPT_NETRC_FILE.pdf \
- CURLOPT_NEW_DIRECTORY_PERMS.pdf CURLOPT_NEW_FILE_PERMS.pdf \
- CURLOPT_NOBODY.pdf CURLOPT_NOPROGRESS.pdf CURLOPT_NOPROXY.pdf \
- CURLOPT_NOSIGNAL.pdf CURLOPT_OPENSOCKETDATA.pdf \
- CURLOPT_OPENSOCKETFUNCTION.pdf CURLOPT_PASSWORD.pdf \
- CURLOPT_PINNEDPUBLICKEY.pdf CURLOPT_PORT.pdf CURLOPT_POST.pdf \
- CURLOPT_POSTFIELDS.pdf CURLOPT_POSTFIELDSIZE.pdf \
- CURLOPT_POSTFIELDSIZE_LARGE.pdf CURLOPT_POSTQUOTE.pdf \
- CURLOPT_POSTREDIR.pdf CURLOPT_PREQUOTE.pdf CURLOPT_PRIVATE.pdf \
- CURLOPT_PROGRESSDATA.pdf CURLOPT_PROGRESSFUNCTION.pdf \
- CURLOPT_PROTOCOLS.pdf CURLOPT_PROXY.pdf CURLOPT_PROXYAUTH.pdf \
- CURLOPT_PROXYHEADER.pdf CURLOPT_PROXYPASSWORD.pdf \
- CURLOPT_PROXYPORT.pdf CURLOPT_PROXY_TRANSFER_MODE.pdf \
- CURLOPT_PROXYTYPE.pdf CURLOPT_PROXYUSERNAME.pdf \
- CURLOPT_PROXYUSERPWD.pdf CURLOPT_PUT.pdf CURLOPT_QUOTE.pdf \
- CURLOPT_RANDOM_FILE.pdf CURLOPT_RANGE.pdf CURLOPT_READDATA.pdf \
- CURLOPT_READFUNCTION.pdf CURLOPT_REDIR_PROTOCOLS.pdf \
- CURLOPT_REFERER.pdf CURLOPT_RESOLVE.pdf CURLOPT_RESUME_FROM.pdf \
- CURLOPT_RESUME_FROM_LARGE.pdf CURLOPT_RTSP_CLIENT_CSEQ.pdf \
- CURLOPT_RTSP_REQUEST.pdf CURLOPT_RTSP_SERVER_CSEQ.pdf \
- CURLOPT_RTSP_SESSION_ID.pdf CURLOPT_RTSP_STREAM_URI.pdf \
- CURLOPT_RTSP_TRANSPORT.pdf CURLOPT_SASL_IR.pdf CURLOPT_SEEKDATA.pdf \
- CURLOPT_SEEKFUNCTION.pdf CURLOPT_SHARE.pdf CURLOPT_SOCKOPTDATA.pdf \
- CURLOPT_SOCKOPTFUNCTION.pdf CURLOPT_SOCKS5_GSSAPI_NEC.pdf \
- CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf CURLOPT_SSH_AUTH_TYPES.pdf \
- CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf CURLOPT_SSH_KEYDATA.pdf \
- CURLOPT_SSH_KEYFUNCTION.pdf CURLOPT_SSH_KNOWNHOSTS.pdf \
- CURLOPT_SSH_PRIVATE_KEYFILE.pdf CURLOPT_SSH_PUBLIC_KEYFILE.pdf \
- CURLOPT_SSLCERT.pdf CURLOPT_SSLCERTTYPE.pdf \
- CURLOPT_SSL_CIPHER_LIST.pdf CURLOPT_SSL_CTX_DATA.pdf \
- CURLOPT_SSL_CTX_FUNCTION.pdf CURLOPT_SSL_ENABLE_ALPN.pdf \
- CURLOPT_SSL_ENABLE_NPN.pdf CURLOPT_SSLENGINE.pdf \
- CURLOPT_SSLENGINE_DEFAULT.pdf CURLOPT_SSL_FALSESTART.pdf \
- CURLOPT_SSLKEY.pdf CURLOPT_SSLKEYTYPE.pdf CURLOPT_SSL_OPTIONS.pdf \
- CURLOPT_SSL_SESSIONID_CACHE.pdf CURLOPT_SSL_VERIFYHOST.pdf \
- CURLOPT_SSL_VERIFYPEER.pdf CURLOPT_SSL_VERIFYSTATUS.pdf \
- CURLOPT_SSLVERSION.pdf CURLOPT_STDERR.pdf CURLOPT_TCP_KEEPALIVE.pdf \
- CURLOPT_TCP_KEEPIDLE.pdf CURLOPT_TCP_KEEPINTVL.pdf \
- CURLOPT_TCP_NODELAY.pdf CURLOPT_TELNETOPTIONS.pdf \
- CURLOPT_TFTP_BLKSIZE.pdf CURLOPT_TIMECONDITION.pdf CURLOPT_TIMEOUT.pdf \
- CURLOPT_TIMEOUT_MS.pdf CURLOPT_TIMEVALUE.pdf \
- CURLOPT_TLSAUTH_PASSWORD.pdf CURLOPT_TLSAUTH_TYPE.pdf \
- CURLOPT_TLSAUTH_USERNAME.pdf CURLOPT_TRANSFER_ENCODING.pdf \
- CURLOPT_TRANSFERTEXT.pdf CURLOPT_UNRESTRICTED_AUTH.pdf \
- CURLOPT_UPLOAD.pdf CURLOPT_URL.pdf CURLOPT_USERAGENT.pdf \
- CURLOPT_USERNAME.pdf CURLOPT_USERPWD.pdf CURLOPT_USE_SSL.pdf \
- CURLOPT_VERBOSE.pdf CURLOPT_WILDCARDMATCH.pdf CURLOPT_WRITEDATA.pdf \
- CURLOPT_WRITEFUNCTION.pdf CURLOPT_XFERINFODATA.pdf \
- CURLOPT_XFERINFOFUNCTION.pdf CURLOPT_XOAUTH2_BEARER.pdf \
- CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
- CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf CURLMOPT_MAXCONNECTS.pdf \
- CURLMOPT_MAX_HOST_CONNECTIONS.pdf CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
- CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf CURLMOPT_PIPELINING.pdf \
- CURLMOPT_PIPELINING_SERVER_BL.pdf CURLMOPT_PIPELINING_SITE_BL.pdf \
- CURLMOPT_SOCKETDATA.pdf CURLMOPT_SOCKETFUNCTION.pdf \
- CURLMOPT_TIMERDATA.pdf CURLMOPT_TIMERFUNCTION.pdf \
- CURLOPT_UNIX_SOCKET_PATH.pdf CURLOPT_PATH_AS_IS.pdf \
- CURLOPT_PROXY_SERVICE_NAME.pdf CURLOPT_SERVICE_NAME.pdf \
- CURLOPT_PIPEWAIT.pdf
+PDFPAGES = \
+ CURLINFO_ACTIVESOCKET.pdf \
+ CURLINFO_APPCONNECT_TIME.pdf \
+ CURLINFO_CERTINFO.pdf \
+ CURLINFO_CONDITION_UNMET.pdf \
+ CURLINFO_CONNECT_TIME.pdf \
+ CURLINFO_CONTENT_LENGTH_DOWNLOAD.pdf \
+ CURLINFO_CONTENT_LENGTH_UPLOAD.pdf \
+ CURLINFO_CONTENT_TYPE.pdf \
+ CURLINFO_COOKIELIST.pdf \
+ CURLINFO_EFFECTIVE_URL.pdf \
+ CURLINFO_FILETIME.pdf \
+ CURLINFO_FTP_ENTRY_PATH.pdf \
+ CURLINFO_HEADER_SIZE.pdf \
+ CURLINFO_HTTPAUTH_AVAIL.pdf \
+ CURLINFO_HTTP_CONNECTCODE.pdf \
+ CURLINFO_LASTSOCKET.pdf \
+ CURLINFO_LOCAL_IP.pdf \
+ CURLINFO_LOCAL_PORT.pdf \
+ CURLINFO_NAMELOOKUP_TIME.pdf \
+ CURLINFO_NUM_CONNECTS.pdf \
+ CURLINFO_OS_ERRNO.pdf \
+ CURLINFO_PRETRANSFER_TIME.pdf \
+ CURLINFO_PRIMARY_IP.pdf \
+ CURLINFO_PRIMARY_PORT.pdf \
+ CURLINFO_PRIVATE.pdf \
+ CURLINFO_PROXYAUTH_AVAIL.pdf \
+ CURLINFO_REDIRECT_COUNT.pdf \
+ CURLINFO_REDIRECT_TIME.pdf \
+ CURLINFO_REDIRECT_URL.pdf \
+ CURLINFO_REQUEST_SIZE.pdf \
+ CURLINFO_RESPONSE_CODE.pdf \
+ CURLINFO_RTSP_CLIENT_CSEQ.pdf \
+ CURLINFO_RTSP_CSEQ_RECV.pdf \
+ CURLINFO_RTSP_SERVER_CSEQ.pdf \
+ CURLINFO_RTSP_SESSION_ID.pdf \
+ CURLINFO_SIZE_DOWNLOAD.pdf \
+ CURLINFO_SIZE_UPLOAD.pdf \
+ CURLINFO_SPEED_DOWNLOAD.pdf \
+ CURLINFO_SPEED_UPLOAD.pdf \
+ CURLINFO_SSL_ENGINES.pdf \
+ CURLINFO_SSL_VERIFYRESULT.pdf \
+ CURLINFO_STARTTRANSFER_TIME.pdf \
+ CURLINFO_TLS_SESSION.pdf \
+ CURLINFO_TLS_SSL_PTR.pdf \
+ CURLINFO_TOTAL_TIME.pdf \
+ CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.pdf \
+ CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.pdf \
+ CURLMOPT_MAXCONNECTS.pdf \
+ CURLMOPT_MAX_HOST_CONNECTIONS.pdf \
+ CURLMOPT_MAX_PIPELINE_LENGTH.pdf \
+ CURLMOPT_MAX_TOTAL_CONNECTIONS.pdf \
+ CURLMOPT_PIPELINING.pdf \
+ CURLMOPT_PIPELINING_SERVER_BL.pdf \
+ CURLMOPT_PIPELINING_SITE_BL.pdf \
+ CURLMOPT_PUSHDATA.pdf \
+ CURLMOPT_PUSHFUNCTION.pdf \
+ CURLMOPT_SOCKETDATA.pdf \
+ CURLMOPT_SOCKETFUNCTION.pdf \
+ CURLMOPT_TIMERDATA.pdf \
+ CURLMOPT_TIMERFUNCTION.pdf \
+ CURLOPT_ACCEPTTIMEOUT_MS.pdf \
+ CURLOPT_ACCEPT_ENCODING.pdf \
+ CURLOPT_ADDRESS_SCOPE.pdf \
+ CURLOPT_APPEND.pdf \
+ CURLOPT_AUTOREFERER.pdf \
+ CURLOPT_BUFFERSIZE.pdf \
+ CURLOPT_CAINFO.pdf \
+ CURLOPT_CAPATH.pdf \
+ CURLOPT_CERTINFO.pdf \
+ CURLOPT_CHUNK_BGN_FUNCTION.pdf \
+ CURLOPT_CHUNK_DATA.pdf \
+ CURLOPT_CHUNK_END_FUNCTION.pdf \
+ CURLOPT_CLOSESOCKETDATA.pdf \
+ CURLOPT_CLOSESOCKETFUNCTION.pdf \
+ CURLOPT_CONNECTTIMEOUT.pdf \
+ CURLOPT_CONNECTTIMEOUT_MS.pdf \
+ CURLOPT_CONNECT_ONLY.pdf \
+ CURLOPT_CONNECT_TO.pdf \
+ CURLOPT_CONV_FROM_NETWORK_FUNCTION.pdf \
+ CURLOPT_CONV_FROM_UTF8_FUNCTION.pdf \
+ CURLOPT_CONV_TO_NETWORK_FUNCTION.pdf \
+ CURLOPT_COOKIE.pdf \
+ CURLOPT_COOKIEFILE.pdf \
+ CURLOPT_COOKIEJAR.pdf \
+ CURLOPT_COOKIELIST.pdf \
+ CURLOPT_COOKIESESSION.pdf \
+ CURLOPT_COPYPOSTFIELDS.pdf \
+ CURLOPT_CRLF.pdf \
+ CURLOPT_CRLFILE.pdf \
+ CURLOPT_CUSTOMREQUEST.pdf \
+ CURLOPT_DEBUGDATA.pdf \
+ CURLOPT_DEBUGFUNCTION.pdf \
+ CURLOPT_DEFAULT_PROTOCOL.pdf \
+ CURLOPT_DIRLISTONLY.pdf \
+ CURLOPT_DNS_CACHE_TIMEOUT.pdf \
+ CURLOPT_DNS_INTERFACE.pdf \
+ CURLOPT_DNS_LOCAL_IP4.pdf \
+ CURLOPT_DNS_LOCAL_IP6.pdf \
+ CURLOPT_DNS_SERVERS.pdf \
+ CURLOPT_DNS_USE_GLOBAL_CACHE.pdf \
+ CURLOPT_EGDSOCKET.pdf \
+ CURLOPT_ERRORBUFFER.pdf \
+ CURLOPT_EXPECT_100_TIMEOUT_MS.pdf \
+ CURLOPT_FAILONERROR.pdf \
+ CURLOPT_FILETIME.pdf \
+ CURLOPT_FNMATCH_DATA.pdf \
+ CURLOPT_FNMATCH_FUNCTION.pdf \
+ CURLOPT_FOLLOWLOCATION.pdf \
+ CURLOPT_FORBID_REUSE.pdf \
+ CURLOPT_FRESH_CONNECT.pdf \
+ CURLOPT_FTPPORT.pdf \
+ CURLOPT_FTPSSLAUTH.pdf \
+ CURLOPT_FTP_ACCOUNT.pdf \
+ CURLOPT_FTP_ALTERNATIVE_TO_USER.pdf \
+ CURLOPT_FTP_CREATE_MISSING_DIRS.pdf \
+ CURLOPT_FTP_FILEMETHOD.pdf \
+ CURLOPT_FTP_RESPONSE_TIMEOUT.pdf \
+ CURLOPT_FTP_SKIP_PASV_IP.pdf \
+ CURLOPT_FTP_SSL_CCC.pdf \
+ CURLOPT_FTP_USE_EPRT.pdf \
+ CURLOPT_FTP_USE_EPSV.pdf \
+ CURLOPT_FTP_USE_PRET.pdf \
+ CURLOPT_GSSAPI_DELEGATION.pdf \
+ CURLOPT_HEADER.pdf \
+ CURLOPT_HEADERDATA.pdf \
+ CURLOPT_HEADERFUNCTION.pdf \
+ CURLOPT_HEADEROPT.pdf \
+ CURLOPT_HTTP200ALIASES.pdf \
+ CURLOPT_HTTPAUTH.pdf \
+ CURLOPT_HTTPGET.pdf \
+ CURLOPT_HTTPHEADER.pdf \
+ CURLOPT_HTTPPOST.pdf \
+ CURLOPT_HTTPPROXYTUNNEL.pdf \
+ CURLOPT_HTTP_CONTENT_DECODING.pdf \
+ CURLOPT_HTTP_TRANSFER_DECODING.pdf \
+ CURLOPT_HTTP_VERSION.pdf \
+ CURLOPT_IGNORE_CONTENT_LENGTH.pdf \
+ CURLOPT_INFILESIZE.pdf \
+ CURLOPT_INFILESIZE_LARGE.pdf \
+ CURLOPT_INTERFACE.pdf \
+ CURLOPT_INTERLEAVEDATA.pdf \
+ CURLOPT_INTERLEAVEFUNCTION.pdf \
+ CURLOPT_IOCTLDATA.pdf \
+ CURLOPT_IOCTLFUNCTION.pdf \
+ CURLOPT_IPRESOLVE.pdf \
+ CURLOPT_ISSUERCERT.pdf \
+ CURLOPT_KEYPASSWD.pdf \
+ CURLOPT_KRBLEVEL.pdf \
+ CURLOPT_LOCALPORT.pdf \
+ CURLOPT_LOCALPORTRANGE.pdf \
+ CURLOPT_LOGIN_OPTIONS.pdf \
+ CURLOPT_LOW_SPEED_LIMIT.pdf \
+ CURLOPT_LOW_SPEED_TIME.pdf \
+ CURLOPT_MAIL_AUTH.pdf \
+ CURLOPT_MAIL_FROM.pdf \
+ CURLOPT_MAIL_RCPT.pdf \
+ CURLOPT_MAXCONNECTS.pdf \
+ CURLOPT_MAXFILESIZE.pdf \
+ CURLOPT_MAXFILESIZE_LARGE.pdf \
+ CURLOPT_MAXREDIRS.pdf \
+ CURLOPT_MAX_RECV_SPEED_LARGE.pdf \
+ CURLOPT_MAX_SEND_SPEED_LARGE.pdf \
+ CURLOPT_NETRC.pdf \
+ CURLOPT_NETRC_FILE.pdf \
+ CURLOPT_NEW_DIRECTORY_PERMS.pdf \
+ CURLOPT_NEW_FILE_PERMS.pdf \
+ CURLOPT_NOBODY.pdf \
+ CURLOPT_NOPROGRESS.pdf \
+ CURLOPT_NOPROXY.pdf \
+ CURLOPT_NOSIGNAL.pdf \
+ CURLOPT_OPENSOCKETDATA.pdf \
+ CURLOPT_OPENSOCKETFUNCTION.pdf \
+ CURLOPT_PASSWORD.pdf \
+ CURLOPT_PATH_AS_IS.pdf \
+ CURLOPT_PINNEDPUBLICKEY.pdf \
+ CURLOPT_PIPEWAIT.pdf \
+ CURLOPT_PORT.pdf \
+ CURLOPT_POST.pdf \
+ CURLOPT_POSTFIELDS.pdf \
+ CURLOPT_POSTFIELDSIZE.pdf \
+ CURLOPT_POSTFIELDSIZE_LARGE.pdf \
+ CURLOPT_POSTQUOTE.pdf \
+ CURLOPT_POSTREDIR.pdf \
+ CURLOPT_PREQUOTE.pdf \
+ CURLOPT_PRIVATE.pdf \
+ CURLOPT_PROGRESSDATA.pdf \
+ CURLOPT_PROGRESSFUNCTION.pdf \
+ CURLOPT_PROTOCOLS.pdf \
+ CURLOPT_PROXY.pdf \
+ CURLOPT_PROXYAUTH.pdf \
+ CURLOPT_PROXYHEADER.pdf \
+ CURLOPT_PROXYPASSWORD.pdf \
+ CURLOPT_PROXYPORT.pdf \
+ CURLOPT_PROXYTYPE.pdf \
+ CURLOPT_PROXYUSERNAME.pdf \
+ CURLOPT_PROXYUSERPWD.pdf \
+ CURLOPT_PROXY_SERVICE_NAME.pdf \
+ CURLOPT_PROXY_TRANSFER_MODE.pdf \
+ CURLOPT_PUT.pdf \
+ CURLOPT_QUOTE.pdf \
+ CURLOPT_RANDOM_FILE.pdf \
+ CURLOPT_RANGE.pdf \
+ CURLOPT_READDATA.pdf \
+ CURLOPT_READFUNCTION.pdf \
+ CURLOPT_REDIR_PROTOCOLS.pdf \
+ CURLOPT_REFERER.pdf \
+ CURLOPT_RESOLVE.pdf \
+ CURLOPT_RESUME_FROM.pdf \
+ CURLOPT_RESUME_FROM_LARGE.pdf \
+ CURLOPT_RTSP_CLIENT_CSEQ.pdf \
+ CURLOPT_RTSP_REQUEST.pdf \
+ CURLOPT_RTSP_SERVER_CSEQ.pdf \
+ CURLOPT_RTSP_SESSION_ID.pdf \
+ CURLOPT_RTSP_STREAM_URI.pdf \
+ CURLOPT_RTSP_TRANSPORT.pdf \
+ CURLOPT_SASL_IR.pdf \
+ CURLOPT_SEEKDATA.pdf \
+ CURLOPT_SEEKFUNCTION.pdf \
+ CURLOPT_SERVICE_NAME.pdf \
+ CURLOPT_SHARE.pdf \
+ CURLOPT_SOCKOPTDATA.pdf \
+ CURLOPT_SOCKOPTFUNCTION.pdf \
+ CURLOPT_SOCKS5_GSSAPI_NEC.pdf \
+ CURLOPT_SOCKS5_GSSAPI_SERVICE.pdf \
+ CURLOPT_SSH_AUTH_TYPES.pdf \
+ CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.pdf \
+ CURLOPT_SSH_KEYDATA.pdf \
+ CURLOPT_SSH_KEYFUNCTION.pdf \
+ CURLOPT_SSH_KNOWNHOSTS.pdf \
+ CURLOPT_SSH_PRIVATE_KEYFILE.pdf \
+ CURLOPT_SSH_PUBLIC_KEYFILE.pdf \
+ CURLOPT_SSLCERT.pdf \
+ CURLOPT_SSLCERTTYPE.pdf \
+ CURLOPT_SSLENGINE.pdf \
+ CURLOPT_SSLENGINE_DEFAULT.pdf \
+ CURLOPT_SSLKEY.pdf \
+ CURLOPT_SSLKEYTYPE.pdf \
+ CURLOPT_SSLVERSION.pdf \
+ CURLOPT_SSL_CIPHER_LIST.pdf \
+ CURLOPT_SSL_CTX_DATA.pdf \
+ CURLOPT_SSL_CTX_FUNCTION.pdf \
+ CURLOPT_SSL_ENABLE_ALPN.pdf \
+ CURLOPT_SSL_ENABLE_NPN.pdf \
+ CURLOPT_SSL_FALSESTART.pdf \
+ CURLOPT_SSL_OPTIONS.pdf \
+ CURLOPT_SSL_SESSIONID_CACHE.pdf \
+ CURLOPT_SSL_VERIFYHOST.pdf \
+ CURLOPT_SSL_VERIFYPEER.pdf \
+ CURLOPT_SSL_VERIFYSTATUS.pdf \
+ CURLOPT_STDERR.pdf \
+ CURLOPT_STREAM_DEPENDS.pdf \
+ CURLOPT_STREAM_DEPENDS_E.pdf \
+ CURLOPT_STREAM_WEIGHT.pdf \
+ CURLOPT_TCP_FASTOPEN.pdf \
+ CURLOPT_TCP_KEEPALIVE.pdf \
+ CURLOPT_TCP_KEEPIDLE.pdf \
+ CURLOPT_TCP_KEEPINTVL.pdf \
+ CURLOPT_TCP_NODELAY.pdf \
+ CURLOPT_TELNETOPTIONS.pdf \
+ CURLOPT_TFTP_BLKSIZE.pdf \
+ CURLOPT_TFTP_NO_OPTIONS.pdf \
+ CURLOPT_TIMECONDITION.pdf \
+ CURLOPT_TIMEOUT.pdf \
+ CURLOPT_TIMEOUT_MS.pdf \
+ CURLOPT_TIMEVALUE.pdf \
+ CURLOPT_TLSAUTH_PASSWORD.pdf \
+ CURLOPT_TLSAUTH_TYPE.pdf \
+ CURLOPT_TLSAUTH_USERNAME.pdf \
+ CURLOPT_TRANSFERTEXT.pdf \
+ CURLOPT_TRANSFER_ENCODING.pdf \
+ CURLOPT_UNIX_SOCKET_PATH.pdf \
+ CURLOPT_UNRESTRICTED_AUTH.pdf \
+ CURLOPT_UPLOAD.pdf \
+ CURLOPT_URL.pdf \
+ CURLOPT_USERAGENT.pdf \
+ CURLOPT_USERNAME.pdf \
+ CURLOPT_USERPWD.pdf \
+ CURLOPT_USE_SSL.pdf \
+ CURLOPT_VERBOSE.pdf \
+ CURLOPT_WILDCARDMATCH.pdf \
+ CURLOPT_WRITEDATA.pdf \
+ CURLOPT_WRITEFUNCTION.pdf \
+ CURLOPT_XFERINFODATA.pdf \
+ CURLOPT_XFERINFOFUNCTION.pdf \
+ CURLOPT_XOAUTH2_BEARER.pdf
CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) $(PDFPAGES)
-MAN2HTML= roffit --mandir=. < $< >$@
+MAN2HTML= roffit --mandir=. $< >$@
SUFFIXES = .3 .html
diff --git a/docs/libcurl/opts/template.3 b/docs/libcurl/opts/template.3
index 184e471e..7ba220e8 100644
--- a/docs/libcurl/opts/template.3
+++ b/docs/libcurl/opts/template.3
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index 8299a517..fa26efbe 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -75,6 +75,7 @@ CURLE_FTP_WRITE_ERROR 7.1 7.17.0
CURLE_FUNCTION_NOT_FOUND 7.1
CURLE_GOT_NOTHING 7.9.1
CURLE_HTTP2 7.38.0
+CURLE_HTTP2_STREAM 7.49.0
CURLE_HTTP_NOT_FOUND 7.1
CURLE_HTTP_PORT_FAILED 7.3 7.12.0
CURLE_HTTP_POST_ERROR 7.1
@@ -164,6 +165,7 @@ CURLFORM_BUFFER 7.9.8
CURLFORM_BUFFERLENGTH 7.9.8
CURLFORM_BUFFERPTR 7.9.8
CURLFORM_CONTENTHEADER 7.9.3
+CURLFORM_CONTENTLEN 7.46.0
CURLFORM_CONTENTSLENGTH 7.9
CURLFORM_CONTENTTYPE 7.9
CURLFORM_COPYCONTENTS 7.9
@@ -199,6 +201,7 @@ CURLGSSAPI_DELEGATION_NONE 7.22.0
CURLGSSAPI_DELEGATION_POLICY_FLAG 7.22.0
CURLHEADER_SEPARATE 7.37.0
CURLHEADER_UNIFIED 7.37.0
+CURLINFO_ACTIVESOCKET 7.45.0
CURLINFO_APPCONNECT_TIME 7.19.0
CURLINFO_CERTINFO 7.19.1
CURLINFO_CONDITION_UNMET 7.19.4
@@ -247,6 +250,7 @@ CURLINFO_RTSP_SESSION_ID 7.20.0
CURLINFO_SIZE_DOWNLOAD 7.4.1
CURLINFO_SIZE_UPLOAD 7.4.1
CURLINFO_SLIST 7.12.3
+CURLINFO_SOCKET 7.45.0
CURLINFO_SPEED_DOWNLOAD 7.4.1
CURLINFO_SPEED_UPLOAD 7.4.1
CURLINFO_SSL_DATA_IN 7.12.1
@@ -256,7 +260,8 @@ CURLINFO_SSL_VERIFYRESULT 7.5
CURLINFO_STARTTRANSFER_TIME 7.9.2
CURLINFO_STRING 7.4.1
CURLINFO_TEXT 7.9.6
-CURLINFO_TLS_SESSION 7.34.0
+CURLINFO_TLS_SESSION 7.34.0 7.48.0
+CURLINFO_TLS_SSL_PTR 7.48.0
CURLINFO_TOTAL_TIME 7.4.1
CURLINFO_TYPEMASK 7.4.1
CURLIOCMD_NOP 7.12.3
@@ -284,6 +289,8 @@ CURLMOPT_MAX_TOTAL_CONNECTIONS 7.30.0
CURLMOPT_PIPELINING 7.16.0
CURLMOPT_PIPELINING_SERVER_BL 7.30.0
CURLMOPT_PIPELINING_SITE_BL 7.30.0
+CURLMOPT_PUSHDATA 7.44.0
+CURLMOPT_PUSHFUNCTION 7.44.0
CURLMOPT_SOCKETDATA 7.15.4
CURLMOPT_SOCKETFUNCTION 7.15.4
CURLMOPT_TIMERDATA 7.16.0
@@ -304,6 +311,7 @@ CURLOPTTYPE_FUNCTIONPOINT 7.1
CURLOPTTYPE_LONG 7.1
CURLOPTTYPE_OBJECTPOINT 7.1
CURLOPTTYPE_OFF_T 7.11.0
+CURLOPTTYPE_STRINGPOINT 7.46.0
CURLOPT_ACCEPTTIMEOUT_MS 7.24.0
CURLOPT_ACCEPT_ENCODING 7.21.6
CURLOPT_ADDRESS_SCOPE 7.19.0
@@ -323,6 +331,7 @@ CURLOPT_CLOSESOCKETFUNCTION 7.21.7
CURLOPT_CONNECTTIMEOUT 7.7
CURLOPT_CONNECTTIMEOUT_MS 7.16.2
CURLOPT_CONNECT_ONLY 7.15.2
+CURLOPT_CONNECT_TO 7.49.0
CURLOPT_CONV_FROM_NETWORK_FUNCTION 7.15.4
CURLOPT_CONV_FROM_UTF8_FUNCTION 7.15.4
CURLOPT_CONV_TO_NETWORK_FUNCTION 7.15.4
@@ -337,6 +346,7 @@ CURLOPT_CRLFILE 7.19.0
CURLOPT_CUSTOMREQUEST 7.1
CURLOPT_DEBUGDATA 7.9.6
CURLOPT_DEBUGFUNCTION 7.9.6
+CURLOPT_DEFAULT_PROTOCOL 7.45.0
CURLOPT_DIRLISTONLY 7.17.0
CURLOPT_DNS_CACHE_TIMEOUT 7.9.3
CURLOPT_DNS_INTERFACE 7.33.0
@@ -484,7 +494,7 @@ CURLOPT_SHARE 7.10
CURLOPT_SOCKOPTDATA 7.16.0
CURLOPT_SOCKOPTFUNCTION 7.16.0
CURLOPT_SOCKS5_GSSAPI_NEC 7.19.4
-CURLOPT_SOCKS5_GSSAPI_SERVICE 7.19.4
+CURLOPT_SOCKS5_GSSAPI_SERVICE 7.19.4 7.49.0
CURLOPT_SOURCE_HOST 7.12.1 - 7.15.5
CURLOPT_SOURCE_PATH 7.12.1 - 7.15.5
CURLOPT_SOURCE_PORT 7.12.1 - 7.15.5
@@ -521,12 +531,17 @@ CURLOPT_SSL_VERIFYHOST 7.8.1
CURLOPT_SSL_VERIFYPEER 7.4.2
CURLOPT_SSL_VERIFYSTATUS 7.41.0
CURLOPT_STDERR 7.1
+CURLOPT_STREAM_DEPENDS 7.46.0
+CURLOPT_STREAM_DEPENDS_E 7.46.0
+CURLOPT_STREAM_WEIGHT 7.46.0
CURLOPT_TCP_KEEPALIVE 7.25.0
CURLOPT_TCP_KEEPIDLE 7.25.0
CURLOPT_TCP_KEEPINTVL 7.25.0
CURLOPT_TCP_NODELAY 7.11.2
+CURLOPT_TCP_FASTOPEN 7.49.0
CURLOPT_TELNETOPTIONS 7.7
CURLOPT_TFTP_BLKSIZE 7.19.4
+CURLOPT_TFTP_NO_OPTIONS 7.48.0
CURLOPT_TIMECONDITION 7.1
CURLOPT_TIMEOUT 7.1
CURLOPT_TIMEOUT_MS 7.16.2
@@ -620,17 +635,22 @@ CURLSSH_AUTH_NONE 7.16.1
CURLSSH_AUTH_PASSWORD 7.16.1
CURLSSH_AUTH_PUBLICKEY 7.16.1
CURLSSLBACKEND_AXTLS 7.38.0
+CURLSSLBACKEND_BORINGSSL 7.49.0
CURLSSLBACKEND_CYASSL 7.34.0
CURLSSLBACKEND_DARWINSSL 7.34.0
CURLSSLBACKEND_GNUTLS 7.34.0
CURLSSLBACKEND_GSKIT 7.34.0
+CURLSSLBACKEND_LIBRESSL 7.49.0
+CURLSSLBACKEND_MBEDTLS 7.46.0
CURLSSLBACKEND_NONE 7.34.0
CURLSSLBACKEND_NSS 7.34.0
CURLSSLBACKEND_OPENSSL 7.34.0
CURLSSLBACKEND_POLARSSL 7.34.0
CURLSSLBACKEND_QSOSSL 7.34.0 - 7.38.1
CURLSSLBACKEND_SCHANNEL 7.34.0
+CURLSSLBACKEND_WOLFSSL 7.49.0
CURLSSLOPT_ALLOW_BEAST 7.25.0
+CURLSSLOPT_NO_REVOKE 7.44.0
CURLUSESSL_ALL 7.17.0
CURLUSESSL_CONTROL 7.17.0
CURLUSESSL_NONE 7.17.0
@@ -648,6 +668,7 @@ CURL_CHUNK_END_FUNC_OK 7.21.0
CURL_CSELECT_ERR 7.16.3
CURL_CSELECT_IN 7.16.3
CURL_CSELECT_OUT 7.16.3
+CURL_DID_MEMORY_FUNC_TYPEDEFS 7.49.0
CURL_EASY_NONE 7.14.0 - 7.15.4
CURL_EASY_TIMEOUT 7.14.0 - 7.15.4
CURL_ERROR_SIZE 7.1
@@ -668,10 +689,20 @@ CURL_GLOBAL_DEFAULT 7.8
CURL_GLOBAL_NOTHING 7.8
CURL_GLOBAL_SSL 7.8
CURL_GLOBAL_WIN32 7.8.1
+CURL_HTTPPOST_BUFFER 7.46.0
+CURL_HTTPPOST_CALLBACK 7.46.0
+CURL_HTTPPOST_FILENAME 7.46.0
+CURL_HTTPPOST_LARGE 7.46.0
+CURL_HTTPPOST_PTRBUFFER 7.46.0
+CURL_HTTPPOST_PTRCONTENTS 7.46.0
+CURL_HTTPPOST_PTRNAME 7.46.0
+CURL_HTTPPOST_READFILE 7.46.0
CURL_HTTP_VERSION_1_0 7.9.1
CURL_HTTP_VERSION_1_1 7.9.1
-CURL_HTTP_VERSION_2_0 7.33.0
CURL_HTTP_VERSION_2 7.43.0
+CURL_HTTP_VERSION_2_0 7.33.0
+CURL_HTTP_VERSION_2TLS 7.47.0
+CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE 7.49.0
CURL_HTTP_VERSION_NONE 7.9.1
CURL_IPRESOLVE_V4 7.10.8
CURL_IPRESOLVE_V6 7.10.8
@@ -702,6 +733,8 @@ CURL_POLL_OUT 7.14.0
CURL_POLL_REMOVE 7.14.0
CURL_PROGRESS_BAR 7.1.1 - 7.4.1
CURL_PROGRESS_STATS 7.1.1 - 7.4.1
+CURL_PUSH_DENY 7.44.0
+CURL_PUSH_OK 7.44.0
CURL_READFUNC_ABORT 7.12.1
CURL_READFUNC_PAUSE 7.18.0
CURL_REDIR_GET_ALL 7.19.1
@@ -757,6 +790,7 @@ CURL_VERSION_LARGEFILE 7.11.1
CURL_VERSION_LIBZ 7.10
CURL_VERSION_NTLM 7.10.6
CURL_VERSION_NTLM_WB 7.22.0
+CURL_VERSION_PSL 7.47.0
CURL_VERSION_SPNEGO 7.10.8
CURL_VERSION_SSL 7.10
CURL_VERSION_SSPI 7.13.2
diff --git a/docs/libcurl/symbols.pl b/docs/libcurl/symbols.pl
index a7b76e23..cfcecd03 100755
--- a/docs/libcurl/symbols.pl
+++ b/docs/libcurl/symbols.pl
@@ -10,7 +10,7 @@
#
# 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.
+# are also available at https://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
diff --git a/docs/mk-ca-bundle.1 b/docs/mk-ca-bundle.1
index 164c9c34..017bb823 100644
--- a/docs/mk-ca-bundle.1
+++ b/docs/mk-ca-bundle.1
@@ -9,7 +9,7 @@
.\" *
.\" * 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.
+.\" * are also available at https://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
@@ -104,7 +104,7 @@ http://p11-glue.freedesktop.org/doc/storing-trust-policy/storing-trust-existing.
.BR curl (1)
.SH HISTORY
\fBmk-ca-bundle\fP is a command line tool that is shipped as part of every
-curl and libcurl release (see http://curl.haxx.se/). It was originally based
+curl and libcurl release (see https://curl.haxx.se/). It was originally based
on the parse-certs script written by Roland Krikava and was later much
improved by Guenter Knauf. This manual page was initially written by Jan
Schaumann \&<jschauma@netmeister.org>.