curl-curl/docs/internals
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
..
BUFQ.md bufq: remove the unused Curl_bufq_unwrite function 2025-06-24 10:56:54 +02:00
BUFREF.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
CHECKSRC.md build: avoid overriding system symbols for fopen functions 2025-09-30 01:10:36 +02:00
CLIENT-READERS.md spelling: 'a' vs 'an' 2025-05-30 11:38:35 +02:00
CLIENT-WRITERS.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
CODE_STYLE.md tidy-up: avoid using the reserved macro namespace 2025-09-20 02:27:06 +02:00
CONNECTION-FILTERS.md spelling: 'a' vs 'an' 2025-05-30 11:38:35 +02:00
CURLX.md curlx: move the docs to docs/internals/ 2025-05-13 10:30:02 +02:00
DYNBUF.md curlx: move into to curlx/ 2025-05-07 11:01:15 +02:00
HASH.md lib: add meta_hash to connection, eliminate hash_offt 2025-04-22 15:57:18 +02:00
LLIST.md docs: use lowercase curl and libcurl 2025-01-02 17:15:54 +01:00
MID.md multi: do transfer book keeping using mid 2025-04-17 17:28:38 +02:00
MQTT.md mqtt: send ping at upkeep interval 2025-04-16 09:36:19 +02:00
MULTI-EV.md multi: event based rework 2025-02-22 14:47:40 +01:00
NEW-PROTOCOL.md GHA: silence proselint warnings and an error 2024-10-15 16:44:17 +02:00
PORTING.md docs/internals/PORTING.md: new document 2025-03-29 14:10:10 +01:00
README.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
SCORECARD.md pytest: use dante-server in CI 2025-07-29 15:02:30 +02:00
SPLAY.md internals/SPLAY.md: internal API documentation 2024-08-16 17:13:37 +02:00
STRPARSE.md spelling: call it null-terminate consistently 2025-05-30 17:29:45 +02:00
TLS-SESSIONS.md spelling: file system 2025-08-22 15:53:41 +02:00
UINT_SETS.md lib: add meta_hash to connection, eliminate hash_offt 2025-04-22 15:57:18 +02:00
WEBSOCKET.md websocket: add option to disable auto-pong reply 2025-04-19 00:01:28 +02:00

Internals

This directory contains documentation covering libcurl internals; APIs and concepts that are useful for contributors and maintainers.

Public APIs are documented in the public documentation, not here.