curlx: add and use curlx_freopen()

To complement the existing `curlx_fopen()` internal API.
It's used by the curl's `--stderr` option.

`curlx_freopen()` adds two features to the bare `freopen()`:
- tracing for debug-enabled builds.
- Unicode and long-filename support for Windows builds.

In effect this adds long-filename and enables Unicode support for
the `--stderr <filename>` curl command-line option on Windows.

Also add to checksrc.

Follow-up to 2f17a9b654 #10673

Closes #19598
This commit is contained in:
Viktor Szakats 2025-11-19 01:10:48 +01:00
parent 2decbb1c1f
commit 3d80d37cf0
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
7 changed files with 68 additions and 11 deletions

View file

@ -60,7 +60,7 @@ void tool_set_stderr_file(const char *filename)
/* freopen the actual stderr (stdio.h stderr) instead of tool_stderr since
the latter may be set to stdout. */
/* !checksrc! disable STDERR 1 */
fp = freopen(filename, FOPEN_WRITETEXT, stderr);
fp = curlx_freopen(filename, FOPEN_WRITETEXT, stderr);
if(!fp) {
/* stderr may have been closed by freopen. there is nothing to be done. */
DEBUGASSERT(0);