summaryrefslogtreecommitdiffstats
path: root/Source/cmCurl.cxx
Commit message (Collapse)AuthorAgeFilesLines
* cmCurlSetCAInfo: use std::string as argumentMarc Chevrier2021-09-191-3/+3
|
* cmCurl: Fix file:// URLs with spaces for curl 7.78+Brad King2021-09-151-1/+6
| | | | | | | | | | | Since curl 7.78, URLs with spaces that are not encoded as `%20` or `+` are now correctly rejected with `CURLUE_MALFORMED_INPUT`. However, CMake has long accepted `file://` URLs with spaces in the path due to curl 7.77 and below accidentally allowing them. Preserve this by explicitly encoding spaces in such URLs before handing them to curl. See also upstream curl commit `b67d3ba73` (curl_url_set: reject spaces in URLs w/o CURLU_ALLOW_SPACE, 2021-05-31, curl-7_78_0~133).
* cmCurl: Adopt helper to fix file:// URLsBrad King2021-09-151-0/+35
| | | | | | Migrate and generalize the helper added by commit e63dcb1378 (Encoding: Use encoding libcurl expects with file: urls., 2014-11-05, v3.2.0-rc1~420^2).
* Source sweep: Use cmStrCat for string concatenationSebastian Holtermann2019-08-221-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is generated by a python script that uses regular expressions to search for string concatenation patterns of the kind ``` std::string str = <ARG0>; str += <ARG1>; str += <ARG2>; ... ``` and replaces them with a single `cmStrCat` call ``` std::string str = cmStrCat(<ARG0>, <ARG1>, <ARG2>, ...); ``` If any `<ARGX>` is itself a concatenated string of the kind ``` a + b + c + ...; ``` then `<ARGX>` is split into multiple arguments for the `cmStrCat` call. If there's a sequence of literals in the `<ARGX>`, then all literals in the sequence are concatenated and merged into a single literal argument for the `cmStrCat` call. Single character strings are converted to single char arguments for the `cmStrCat` call. `std::to_string(...)` wrappings are removed from `cmStrCat` arguments, because it supports numeric types as well as string types. `arg.substr(x)` arguments to `cmStrCat` are replaced with `cm::string_view(arg).substr(x)`
* Fix most clang -Wextra-semi-stmt warnings in C++ filesSean McBride2019-01-151-5/+7
| | | | Suppress one in code generated by flex.
* CTest: Remove submit method 'xmlrpc'Regina Pfeifer2018-11-281-2/+0
|
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-011-9/+9
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* file(DOWNLOAD|UPLOAD): Add 'NETRC' and 'NETRC_FILE' suboptionShane Parris2017-10-181-0/+38
|
* Simplify CMake per-source license noticesBrad King2016-09-271-11/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Per-source copyright/license notice headers that spell out copyright holder names and years are hard to maintain and often out-of-date or plain wrong. Precise contributor information is already maintained automatically by the version control tool. Ultimately it is the receiver of a file who is responsible for determining its licensing status, and per-source notices are merely a convenience. Therefore it is simpler and more accurate for each source to have a generic notice of the license name and references to more detailed information on copyright holders and full license terms. Our `Copyright.txt` file now contains a list of Contributors whose names appeared source-level copyright notices. It also references version control history for more precise information. Therefore we no longer need to spell out the list of Contributors in each source file notice. Replace CMake per-source copyright/license notice headers with a short description of the license and links to `Copyright.txt` and online information available from "https://cmake.org/licensing". The online URL also handles cases of modules being copied out of our source into other projects, so we can drop our notices about replacing links with full license text. Run the `Utilities/Scripts/filter-notices.bash` script to perform the majority of the replacements mechanically. Manually fix up shebang lines and trailing newlines in a few files. Manually update the notices in a few files that the script does not handle.
* surround macro arguments with parenthesesDaniel Pfeifer2016-09-051-2/+2
|
* fix a load of include-what-you-use violationsDaniel Pfeifer2016-09-031-2/+7
|
* Revise C++ coding style using clang-formatKitware Robot2016-05-161-32/+25
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Remove `//------...` horizontal separator commentsBrad King2016-05-091-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Modern editors provide plenty of ways to visually separate functions. Drop the explicit comments that previously served this purpose. Use the following command to automate the change: $ git ls-files -z -- \ "*.c" "*.cc" "*.cpp" "*.cxx" "*.h" "*.hh" "*.hpp" "*.hxx" | egrep -z -v "^Source/cmCommandArgumentLexer\." | egrep -z -v "^Source/cmCommandArgumentParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmDependsJavaLexer\." | egrep -z -v "^Source/cmDependsJavaParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmExprLexer\." | egrep -z -v "^Source/cmExprParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmFortranLexer\." | egrep -z -v "^Source/cmFortranParser(\.y|\.cxx|Tokens\.h)" | egrep -z -v "^Source/cmListFileLexer\." | egrep -z -v "^Source/cm_sha2" | egrep -z -v "^Source/(kwsys|CursesDialog/form)/" | egrep -z -v "^Utilities/(KW|cm).*/" | xargs -0 sed -i '/^\(\/\/---*\|\/\*---*\*\/\)$/ {d;}' This avoids modifying third-party sources and generated sources.
* Source: Stabilize include orderBrad King2016-04-291-0/+1
| | | | | Each source file has a logical first include file. Include it in an isolated block so that tools that sort includes do not move them.
* cmCurl: Fix compilation with system curl versions prior to 7.21.5Brad King2016-02-091-0/+5
| | | | | | | This version introduced CURLE_NOT_BUILT_IN which we have used since commit v3.4.0-rc1~211^2~4 (cmCurl: Tolerate lack of CURLOPT_CAPATH support, 2015-08-12). For older versions, just define the name to the then-unused error code so that we can compile.
* cmCurl: Tolerate lack of CURLOPT_CAPATH supportBrad King2015-08-121-1/+1
| | | | | | Since curl 7.39 the CURLOPT_CAPATH setting may be rejected with a CURLE_NOT_BUILT_IN error. Simply tolerate this with silent failure since we just will not use the CAPATH setting in this case.
* cmake: Use a default CA path when not using system curlBrad King2015-01-231-0/+64
When using system curl, we trust it to be configured with desired CA certs. When using our own build of curl, we use os-configured CA certs on Windows and OS X. On other systems, try to achieve this by searching for common CA cert locations. According to a brief investigation, the curl packages on popular Linux distros are currently configured as: * Arch: /etc/ssl/certs/ca-certificates.crt * Debian with OpenSSL: /etc/ssl/certs * Debian with GNU TLS: /etc/ssl/certs/ca-certificates.crt * Debian with NSS: /etc/ssl/certs/ca-certificates.crt * Fedora: /etc/pki/tls/certs/ca-bundle.crt * Gentoo with OpenSSL: /etc/ssl/certs * Gentoo without OpenSSL: /etc/ssl/certs/ca-certificates.crt Teach CMake and CTest to look for these paths and use them as a CA path or bundle when no other os-configured or user-specified CAs are available.