<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-base.
</pre>
<p><a href="https://github.com/macports/macports-base/commit/84f97ca201c6705d0b8e4d73e8566b76c7ff2a3c">https://github.com/macports/macports-base/commit/84f97ca201c6705d0b8e4d73e8566b76c7ff2a3c</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 84f97ca pextlib : Support custom HTTP headers
</span>84f97ca is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 84f97ca201c6705d0b8e4d73e8566b76c7ff2a3c
</span>Author: Chris Jones <jonesc@hep.phy.cam.ac.uk>
AuthorDate: Wed Aug 15 16:47:25 2018 +0100
<span style='display:block; white-space:pre;color:#404040;'> pextlib : Support custom HTTP headers
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> portlivecheck : Add new livecheck.curloptions option. Default is :-
</span><span style='display:block; white-space:pre;color:#404040;'> {{ "--append-http-header"
</span><span style='display:block; white-space:pre;color:#404040;'> "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }}
</span>---
src/pextlib1.0/curl.c | 27 +++++++++++++++++++++++++++
src/port1.0/portlivecheck.tcl | 7 +++++--
2 files changed, 32 insertions(+), 2 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/pextlib1.0/curl.c b/src/pextlib1.0/curl.c
</span><span style='display:block; white-space:pre;color:#808080;'>index d8202bf..70d3e81 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/pextlib1.0/curl.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/pextlib1.0/curl.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -178,6 +178,9 @@ CurlFetchCmd(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
</span> };
char* effectiveURL = NULL;
char* userAgent = PACKAGE_NAME "/" PACKAGE_VERSION " libcurl/" LIBCURL_VERSION;
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int MAXHTTPHEADERS = 100;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int numHTTPHeaders = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const char* httpHeaders[MAXHTTPHEADERS];
</span> int optioncrsr;
int lastoption;
const char* theURL;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -240,6 +243,26 @@ CurlFetchCmd(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
</span> theResult = TCL_ERROR;
break;
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (strcmp(theOption, "--append-http-header") == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* check we also have the parameter */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (optioncrsr < lastoption) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ optioncrsr++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if ( numHTTPHeaders < MAXHTTPHEADERS ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ httpHeaders[numHTTPHeaders++] = Tcl_GetString(objv[optioncrsr]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Tcl_SetResult(interp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "curl fetch: Too many --append-http-header options",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TCL_STATIC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ theResult = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Tcl_SetResult(interp,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ "curl fetch: --append-http-header option requires a parameter",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ TCL_STATIC);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ theResult = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> } else if (strcmp(theOption, "--progress") == 0) {
/* check we also have the parameter */
if (optioncrsr < lastoption) {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -466,6 +489,10 @@ CurlFetchCmd(Tcl_Interp* interp, int objc, Tcl_Obj* CONST objv[])
</span>
/* Clear the Pragma: no-cache header */
headers = curl_slist_append(headers, "Pragma:");
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ /* Append any optional headers */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ for ( int iH = 0; iH < numHTTPHeaders; ++iH ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ headers = curl_slist_append(headers, httpHeaders[iH]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> theCurlCode = curl_easy_setopt(theHandle, CURLOPT_HTTPHEADER, headers);
if (theCurlCode != CURLE_OK) {
theResult = SetResultFromCurlErrorCode(interp, theCurlCode);
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portlivecheck.tcl b/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 0b88cc4..602ff89 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portlivecheck.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -45,7 +45,7 @@ namespace eval portlivecheck {
</span> }
# define options
<span style='display:block; white-space:pre;background:#ffe0e0;'>-options livecheck.url livecheck.type livecheck.md5 livecheck.regex livecheck.name livecheck.distname livecheck.version livecheck.ignore_sslcert
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+options livecheck.url livecheck.type livecheck.md5 livecheck.regex livecheck.name livecheck.distname livecheck.version livecheck.ignore_sslcert livecheck.curloptions
</span>
# defaults
default livecheck.url {$homepage}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -56,10 +56,12 @@ default livecheck.name default
</span> default livecheck.distname default
default livecheck.version {$version}
default livecheck.ignore_sslcert no
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default livecheck.curloptions {{ "--append-http-header" "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }}
</span>
proc portlivecheck::livecheck_main {args} {
global livecheck.url livecheck.type livecheck.md5 livecheck.regex livecheck.name livecheck.distname livecheck.version \
livecheck.ignore_sslcert \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ livecheck.curloptions \
</span> homepage portpath workpath \
master_sites name subport distfiles
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -75,7 +77,7 @@ proc portlivecheck::livecheck_main {args} {
</span>
ui_debug "Port (livecheck) version is ${livecheck.version}"
<span style='display:block; white-space:pre;background:#ffe0e0;'>- set curl_options {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set curl_options ${livecheck.curloptions}
</span> if {[tbool livecheck.ignore_sslcert]} {
lappend curl_options "--ignore-ssl-cert"
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -144,6 +146,7 @@ proc portlivecheck::livecheck_main {args} {
</span> "regexm" {
# single and multiline regex
ui_debug "Fetching ${livecheck.url}"
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ ui_debug "Using CURL options ${curl_options}"
</span> set updated -1
if {[catch {curl fetch {*}$curl_options ${livecheck.url} $tempfile} error]} {
ui_error "cannot check if $subport was updated ($error)"
</pre><pre style='margin:0'>
</pre>