curl/docs/internals
Viktor Szakats 969351bb1e
windows: fix CreateFile() calls to support long filenames
It makes them work in Schannel's CA bundle loader, and curl tool's
set/get file timestamp operations (e.g. in `-R`/`--remote-time`). Also
to match file open operations, that already support long filenames.

E.g. when using `--remote-time`, fixing:
```
Warning: Failed to set filetime 1741363917 on outfile: CreateFile failed:
Warning: GetLastError 0x00000003
```

The special long filename logic is necessary to support Windows releases
prior to Windows 10 v1607. With the latter, it's possible to opt-in to
this behavior via a manifest setting. Note that Windows itself also needs
to opt-in to support this. Finally note that curl itself needs passing
`--globoff` to let long filenames through, pending #20044 and #20046.

Refs:
https://learn.microsoft.com/windows/win32/api/fileapi/nf-fileapi-createfilea
https://learn.microsoft.com/windows/win32/fileio/maximum-file-path-limitation

Ref: #8361
Inspired by: #19286
Inspired-by: Mathesh V
Closes #19286
Closes #20040
2025-12-20 14:16:42 +01:00
..
BUFQ.md docs: fold long lines 2025-12-11 11:42:28 +01:00
BUFREF.md bufref: add Curl_bufref_dup that returns a strdup()ed version 2025-12-04 19:04:19 +01:00
CHECKSRC.md build: stop overriding standard memory allocation functions 2025-11-28 10:44:26 +01:00
CLIENT-READERS.md docs: fold long lines 2025-12-11 11:42:28 +01:00
CLIENT-WRITERS.md docs: fold long lines 2025-12-11 11:42:28 +01:00
CODE_STYLE.md windows: fix CreateFile() calls to support long filenames 2025-12-20 14:16:42 +01:00
CONNECTION-FILTERS.md docs: fold long lines 2025-12-11 11:42:28 +01: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 docs: fold long lines 2025-12-11 11:42:28 +01: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
RATELIMITS.md ratelimit: redesign 2025-11-24 23:34:05 +01:00
README.md docs/internals: new subdirectory 2024-08-16 08:59:25 +02:00
SCORECARD.md docs: fold long lines 2025-12-11 11:42:28 +01: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
TIME-KEEPING.md TIME-KEEPING.md: fold long lines 2025-12-18 23:00:06 +01:00
TLS-SESSIONS.md docs: fold long lines 2025-12-11 11:42:28 +01:00
UINT_SETS.md TIME-KEEPING.md: fold long lines 2025-12-18 23:00:06 +01: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.