/ curl Public
tool: improve --stderr handling #10673
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge.
freopen stderr with the user-specified file (--stderr file) instead of using a separate 'errors' stream.
Override stderr macro in tool_setup as global variable tool_stderr.
Both freopen and overriding the stderr macro are necessary because if the user-specified filename is "-" then stdout is assigned to tool_stderr and no freopen takes place.
Note --stderr maps to libcurl's CURLOPT_STDERR but they are documented differently:
"Redirect all writes to stderr"
"when showing the progress meter and displaying CURLOPT_VERBOSE data"
If the curl tool has freopened stderr as a file (--stderr file) then libcurl stderr output will also go to the file. OTOH if stdout was specified (--stderr -) then libcurl writes to stderr go to actual stderr and just the criteria above is written to stdout. IMO the distinction is moot since in libcurl we only write to stderr for developer debug output.