From: Daniel Stenberg Date: Thu, 17 Mar 2022 15:32:45 +0000 (+0100) Subject: curl: add %header{name} support in -w handling X-Git-Tag: curl-7_83_0~128 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2d45137e1e7c856ac044c9414ddbb74c0835c273;p=thirdparty%2Fcurl.git curl: add %header{name} support in -w handling Outputs the response header 'name' --- diff --git a/docs/cmdline-opts/write-out.d b/docs/cmdline-opts/write-out.d index 35ab41a22b..6d8ed44925 100644 --- a/docs/cmdline-opts/write-out.d +++ b/docs/cmdline-opts/write-out.d @@ -22,6 +22,10 @@ output a newline by using \\n, a carriage return with \\r and a tab space with The output will be written to standard output, but this can be switched to standard error by using %{stderr}. +You can also access HTTP headers of the most recent request done, with the +help of \fB%header{name}\fP where \fBname\fP is the case insensitive name of +the header (without trailing colon). Added in curl 7.83.0. + .B NOTE: The %-symbol is a special symbol in the win32-environment, where all occurrences of % must be doubled when using this option. diff --git a/src/tool_writeout.c b/src/tool_writeout.c index 5b22a1a9cb..c2e4095530 100644 --- a/src/tool_writeout.c +++ b/src/tool_writeout.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2021, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -380,6 +380,20 @@ void ourWriteOut(const char *writeinfo, struct per_transfer *per, ptr = end + 1; /* pass the end */ *end = keepit; } + else if(!strncmp("header{", &ptr[1], 7)) { + ptr += 8; + end = strchr(ptr, '}'); + if(end) { + struct curl_header *header; + *end = 0; + if(CURLHE_OK == curl_easy_header(per->curl, ptr, 0, CURLH_HEADER, + -1, &header)) + fputs(header->value, stream); + ptr = end + 1; /* pass the end */ + } + else + fputs("%header{", stream); + } else { /* illegal syntax, then just output the characters that are used */ fputc('%', stream);