mirror of
https://github.com/curl/curl.git
synced 2026-04-13 12:41:42 +08:00
Move existing `Curl_rename()` `rename()` wrapper from lib to curlx/fopen, and make it a curlx macro/function. To allow using the local worker function to fixup long filenames on Windows. Then fix the Windows-specific rename implementation to support long filenames. This operation may happen when using a cookie jar, HSTS cache or alt-svc cache, via libcurl or the curl tool. Before this patch, when passing a long filename to the above options, a `<random>.tmp` file was left on the disk without renaming it to the filename passed to curl. There was also 1 second delay for each attempted rename operation. Also: - checksrc: ban raw `rename()` and `MoveFileEx*()` functions. - Note: `Curl_rename()` returned 1 on failure before this patch, while `curlx_rename()` returns -1 after, to match POSIX `rename()`. Refs: https://learn.microsoft.com/windows/win32/api/winbase/nf-winbase-movefileexa https://learn.microsoft.com/windows/win32/fileio/maximum-file-path-limitation Ref: #20040 Closes #20042 |
||
|---|---|---|
| .. | ||
| BUFQ.md | ||
| BUFREF.md | ||
| CHECKSRC.md | ||
| CLIENT-READERS.md | ||
| CLIENT-WRITERS.md | ||
| CODE_STYLE.md | ||
| CONNECTION-FILTERS.md | ||
| CURLX.md | ||
| DYNBUF.md | ||
| HASH.md | ||
| LLIST.md | ||
| MID.md | ||
| MQTT.md | ||
| MULTI-EV.md | ||
| NEW-PROTOCOL.md | ||
| PORTING.md | ||
| RATELIMITS.md | ||
| README.md | ||
| SCORECARD.md | ||
| SPLAY.md | ||
| STRPARSE.md | ||
| TIME-KEEPING.md | ||
| TLS-SESSIONS.md | ||
| UINT_SETS.md | ||
| WEBSOCKET.md | ||
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.