A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
Find a file
Viktor Szakats 20142f5d06
build: avoid overriding system symbols for fopen functions
By introducing wrappers for them in the curlx namespace:
`curlx_fopen()`, `curlx_fdopen()`, `curlx_fclose()`.

The undefine/redefine/`(function)()` methods broke on systems
implementing these functions as macros. E.g. AIX 32-bit's `fopen()`.

Also:
- rename `lib/fopen.*` to `lib/curl_fopen.*` (for `Curl_fopen()`)
  to make room for the newly added `curlx/fopen.h`.
- curlx: move file-related functions from `multibyte.c` to `fopen.c`.
- tests/server: stop using the curl-specific `fopen()` implementation
  on Windows. Unicode isn't used by runtests, and it isn't critical to
  run tests on longs path. It can be re-enabled if this becomes
  necessary, or if the wrapper receives a feature that's critical for
  test servers.

Reported-by: Andrew Kirillov
Bug: https://github.com/curl/curl/issues/18510#issuecomment-3274393640

Follow-up to bf7375ecc5 #18503
Follow-up to 9863599d69 #18502
Follow-up to 3bb5e58c10 #17827

Closes #18634
2025-09-30 01:10:36 +02:00
.circleci CI: make pip use tests/requirements.txt in Circle CI 2025-09-28 00:43:24 +02:00
.github build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
CMake vssh: drop support for wolfSSH 2025-09-24 22:59:33 +02:00
docs build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
include krb5: drop support for Kerberos FTP 2025-09-20 23:58:28 +02:00
lib build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
LICENSES krb5: drop support for Kerberos FTP 2025-09-20 23:58:28 +02:00
m4 autotools: capitalize 'Rustls' in the log output 2025-09-22 10:11:31 +02:00
packages OS400: fix a use-after-free/double-free case 2025-09-25 10:18:22 +02:00
plan9
projects build: drop the winbuild build system 2025-09-20 01:20:25 +02:00
scripts build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
src build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
tests build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
.dir-locals.el
.editorconfig
.git-blame-ignore-revs
.gitattributes
.gitignore build: drop the winbuild build system 2025-09-20 01:20:25 +02:00
.mailmap
acinclude.m4 autotools: fix duplicate UNIX and BSD flags in buildinfo.txt 2025-09-21 18:51:11 +02:00
appveyor.sh build: drop the winbuild build system 2025-09-20 01:20:25 +02:00
appveyor.yml build: drop the winbuild build system 2025-09-20 01:20:25 +02:00
buildconf
CHANGES.md
CMakeLists.txt vssh: drop support for wolfSSH 2025-09-24 22:59:33 +02:00
configure.ac tidy-up: miscellaneous 2025-09-27 12:59:07 +02:00
COPYING
curl-config.in
Dockerfile Dockerfile: update debian:bookworm-slim Docker digest to df52e55 2025-09-09 15:28:00 +02:00
GIT-INFO.md
libcurl.pc.in
Makefile.am vssh: drop support for wolfSSH 2025-09-24 22:59:33 +02:00
README krb5: drop support for Kerberos FTP 2025-09-20 23:58:28 +02:00
README.md krb5: drop support for Kerberos FTP 2025-09-20 23:58:28 +02:00
RELEASE-NOTES RELEASE-NOTES: synced 2025-09-25 23:35:31 +02:00
renovate.json
REUSE.toml build: avoid overriding system symbols for socket functions 2025-09-20 13:44:59 +02:00
SECURITY.md

curl logo

curl is a command-line tool for transferring data specified with URL syntax. Learn how to use curl by reading the manpage or everything curl.

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 manpage to learn how.

Open Source

curl is Open Source and is distributed under an MIT-like license.

Contact

Contact us on a suitable mailing list or use GitHub issues/ pull requests/ discussions.

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

Commercial support

For commercial support, maybe private and dedicated help with your problems or applications using (lib)curl visit the support page.

Website

Visit the curl website for the latest news and downloads.

Source code

Download the latest source from the Git server:

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

Security problems

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

Backers

Thank you to all our backers 🙏 Become a backer.

Sponsors

Support this project by becoming a sponsor.