]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
curl: make -w's %{stderr} use the file set with --stderr
authorJay Satiro <raysatiro@yahoo.com>
Mon, 20 Feb 2023 13:16:41 +0000 (14:16 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 23 Feb 2023 09:05:13 +0000 (10:05 +0100)
Reported-by: u20221022 on github
Fixes #10491
Closes #10569

src/tool_operate.c
src/tool_writeout.c
src/tool_writeout.h

index ba089b3bf671d17a6aefb87c64258bb174cbf288..804d981d9ee46601697b767669572bb5a6a94261 100644 (file)
@@ -661,7 +661,7 @@ static CURLcode post_per_transfer(struct GlobalConfig *global,
 
   /* Write the --write-out data before cleanup but after result is final */
   if(config->writeout)
-    ourWriteOut(config->writeout, per, result);
+    ourWriteOut(config, per, result);
 
   /* Close function-local opened file descriptors */
   if(per->heads.fopened && per->heads.stream)
index 5246db2cf3d7796aa4c6088b67cda6f52ac960c9..d93de829a16124a0065585a7e3fc7ccd1382594e 100644 (file)
@@ -376,15 +376,19 @@ static int writeOffset(FILE *stream, const struct writeoutvar *wovar,
   return 1; /* return 1 if anything was written */
 }
 
-void ourWriteOut(const char *writeinfo, struct per_transfer *per,
+void ourWriteOut(struct OperationConfig *config, struct per_transfer *per,
                  CURLcode per_result)
 {
   FILE *stream = stdout;
+  const char *writeinfo = config->writeout;
   const char *ptr = writeinfo;
   bool done = FALSE;
   struct curl_certinfo *certinfo;
   CURLcode res = curl_easy_getinfo(per->curl, CURLINFO_CERTINFO, &certinfo);
 
+  if(!writeinfo)
+    return;
+
   if(!res && certinfo)
     per->certinfo = certinfo;
 
@@ -423,7 +427,7 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per,
                 stream = stdout;
                 break;
               case VAR_STDERR:
-                stream = stderr;
+                stream = config->global->errors;
                 break;
               case VAR_JSON:
                 ourWriteOutJSON(stream, variables, per, per_result);
index 0c07f222b54ecb9693722594dea0e2568da45e05..fac7bdd19690fe71387abdf9e4de21dc6327e3a2 100644 (file)
@@ -84,7 +84,7 @@ struct writeoutvar {
                    bool use_json);
 };
 
-void ourWriteOut(const char *writeinfo, struct per_transfer *per,
+void ourWriteOut(struct OperationConfig *config, struct per_transfer *per,
                  CURLcode per_result);
 
 #endif /* HEADER_CURL_TOOL_WRITEOUT_H */