Go to file
Jay Satiro 70c4fad734 gitattributes: Set batch files to CRLF line endings on checkout
If a batch file is run without CRLF line endings (ie LF-only) then
arbitrary behavior may occur. I consider that a bug in Windows, however
the effects can be serious enough (eg unintended code executed) that
we're fixing it in the repo by requiring CRLF line endings for batch
files on checkout.

Prior to this change the checked-out line endings of batch files were
dependent on a user's git preferences. On Windows it is common for git
users to have automatic CRLF conversion enabled (core.autocrlf true),
but those users that don't would run into this behavior.

For example a user has reported running the Visual Studio project
generator batch file (projects/generate.bat) and it looped forever.
Output showed that the Windows OS interpreter was occasionally jumping
to arbitrary points in the batch file and executing commands. This
resulted in unintended files being removed (a removal sequence called)
and looping forever.

Ref: https://serverfault.com/q/429594
Ref: https://stackoverflow.com/q/232651
Ref: https://www.dostips.com/forum/viewtopic.php?t=8988
Ref: https://git-scm.com/docs/gitattributes#_checking_out_and_checking_in
Ref: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_core_autocrlf

Bug: https://github.com/curl/curl/discussions/6427
Reported-by: Ganesh Kamath

Closes https://github.com/curl/curl/pull/6442
2021-01-14 15:59:56 -05:00
.github CI: fix warning with the latest versions 2020-12-25 16:21:14 +01:00
.muse CI: Add muse CI config 2020-08-04 09:52:52 +02:00
CMake cmake: make CURL_ZLIB a tri-state variable 2020-11-19 13:38:47 +01:00
docs ROADMAP: refreshed 2021-01-14 09:49:17 +01:00
include curl.h: add CURLPROTO_GOPHERS as own protocol identifier 2021-01-06 15:23:41 +01:00
lib http_chunks: remove Curl_ prefix from static functions 2021-01-14 08:09:09 +01:00
m4 configure: set -Wextra-semi-stmt for clang with --enable-debug 2020-12-29 23:02:43 +01:00
packages misc: assorted typo fixes 2020-12-26 23:54:25 +01:00
plan9 copyright: fix year ranges 2020-11-05 08:22:10 +01:00
projects copyright: fix year ranges 2020-11-05 08:22:10 +01:00
scripts travis: make the Hyper build from its master branch 2021-01-11 00:17:52 +01:00
src tool_operate: spellfix a comment 2021-01-14 13:40:12 +01:00
tests misc: fix typos 2021-01-11 15:12:25 +01:00
winbuild winbuild: remove docs from Makefiles and refer to README.md 2020-11-22 23:02:25 +01:00
.azure-pipelines.yml curl.se: new home 2020-11-04 23:59:47 +01:00
.cirrus.yml CI/cirrus: simplify logic for disabled tests 2020-11-20 12:45:11 +01:00
.dcignore .dcignore: ignore tests and docs directories 2020-06-27 00:07:37 +02:00
.dir-locals.el curl.se: new home 2020-11-04 23:59:47 +01:00
.gitattributes gitattributes: Set batch files to CRLF line endings on checkout 2021-01-14 15:59:56 -05:00
.gitignore .gitignore: add directory containing the stats repo 2020-06-05 19:54:34 +02:00
.lgtm.yml curl.se: new home 2020-11-04 23:59:47 +01:00
.mailmap mailmap: Daniel Hwang 2020-11-20 11:05:46 +01:00
.travis.yml travis: limit the tests with quiche builds to HTTPS and FTPS only 2021-01-03 18:17:20 +01:00
CHANGES curl.se: new home 2020-11-04 23:59:47 +01:00
CMakeLists.txt cmake: Add an option to disable libidn2 2021-01-08 22:36:43 -05:00
COPYING COPYING/configure: bump copyright year range 2021-01-01 00:52:28 +01:00
GIT-INFO CHANGES.0: removed 2017-02-07 08:20:10 +01:00
MacOSX-Framework curl.se: new home 2020-11-04 23:59:47 +01:00
Makefile.am Revert "libcurl.pc: make it relocatable" 2020-11-09 09:13:06 +01:00
Makefile.dist curl.se: new home 2020-11-04 23:59:47 +01:00
README curl.se: new home 2020-11-04 23:59:47 +01:00
README.md curl.se: new home 2020-11-04 23:59:47 +01:00
RELEASE-NOTES RELEASE-NOTES: synced 2021-01-11 00:27:46 +01:00
SECURITY.md SECURITY.md: minor rephrase 2020-03-30 08:53:25 +02:00
acinclude.m4 language: s/behaviour/behavior/g 2021-01-02 23:35:59 +01:00
appveyor.yml curl.se: new home 2020-11-04 23:59:47 +01:00
buildconf buildconf: exec autoreconf to avoid additional process 2020-08-29 21:43:49 +02:00
buildconf.bat curl.se: new home 2020-11-04 23:59:47 +01:00
configure.ac COPYING/configure: bump copyright year range 2021-01-01 00:52:28 +01:00
curl-config.in curl.se: new home 2020-11-04 23:59:47 +01:00
libcurl.pc.in Revert "libcurl.pc: make it relocatable" 2020-11-09 09:13:06 +01:00
maketgz copyright: fix year ranges 2020-11-05 08:22:10 +01:00

README.md

curl logo

CII Best Practices Coverity passed Travis-CI Build Status AppVeyor Build Status Azure DevOps Build Status Cirrus Build Status Backers on Open Collective Sponsors on Open Collective Language Grade: C/C++ Codacy Badge Fuzzing Status

Curl is a command-line tool for transferring data specified with URL syntax. Find out how to use curl by reading the curl.1 man page or the MANUAL document. Find out how to install Curl by reading the INSTALL document.

libcurl is the library curl is using to do its job. It is readily available to be used by your software. Read the libcurl.3 man page to learn how!

You can find answers to the most frequent questions we get in the FAQ document.

Study the COPYING file for distribution terms.

Contact

If you have problems, questions, ideas or suggestions, please contact us by posting to a suitable mailing list.

All contributors to the project are listed in the THANKS document.

Website

Visit the curl website for the latest news and downloads.

Git

To download the very latest source from the Git server do this:

git clone https://github.com/curl/curl.git

(you'll get a directory named curl created, filled with the source code)

Security problems

Report suspected security problems via our HackerOne page and not in public!

Notice

Curl contains pieces of source code that is Copyright (c) 1998, 1999 Kungliga Tekniska Högskolan. This notice is included here to comply with the distribution terms.

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]