← Commit list

d9d2e339ce

Viktor Szakats
Viktor Szakats
2025-12-10
SUCCESS Duration: 202s

Subject

tidy-up: URLs (cont.) and mdlinkcheck

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

docs/BINDINGS.md+3 -3
@@ -49,7 +49,7 @@ Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo
[Fortran](https://github.com/interkosmos/fortran-curl) Written by Philipp Engel
-[Gambas](https://gambas.sourceforge.net/)
+[Gambas](https://gambaswiki.org/website/en/main.html)
[glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer
@@ -102,7 +102,7 @@ Bailiff and Bálint Szilakszi,
[PureBasic](https://web.archive.org/web/20250325015028/www.purebasic.com/documentation/http/index.html) uses libcurl in its "native" HTTP subsystem
-[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen
+[Python](https://github.com/pycurl/pycurl) PycURL by Kjetil Jacobsen
[Python](https://pypi.org/project/pymcurl/) mcurl by Ganesh Viswanathan
@@ -112,7 +112,7 @@ Bailiff and Bálint Szilakszi,
[Rexx](https://rexxcurl.sourceforge.net/) Written Mark Hessling
-[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed
+[Ring](https://ring-lang.github.io/doc1.24/libcurl.html) RingLibCurl by Mahmoud Fayed
RPG, support for ILE/RPG on OS/400 is included in source distribution
docs/FAQ.md+8 -8
@@ -303,7 +303,7 @@ library comparison](https://curl.se/docs/ssl-compared.html).
The curl tool that is shipped as an integrated component of Windows 10 and
Windows 11 is managed by Microsoft. If you were to delete the file or replace
it with a newer version downloaded from [the curl
-website](https://curl.se/windows), then Windows Update will cease to work on
+website](https://curl.se/windows/), then Windows Update will cease to work on
your system.
There is no way to independently force an upgrade of the curl.exe that is part
@@ -312,7 +312,7 @@ also nothing the curl project itself can do about this, since this is managed
and controlled entirely by Microsoft as owners of the operating system.
You can always download and install [the latest version of curl for
-Windows](https://curl.se/windows) into a separate location.
+Windows](https://curl.se/windows/) into a separate location.
## Does curl support SOCKS (RFC 1928) ?
@@ -908,12 +908,12 @@ format:
you will find that even if `D:\blah.txt` does exist, curl returns a 'file not
found' error.
-According to [RFC 1738](https://www.ietf.org/rfc/rfc1738.txt), `file://` URLs
-must contain a host component, but it is ignored by most implementations. In
-the above example, `D:` is treated as the host component, and is taken away.
-Thus, curl tries to open `/blah.txt`. If your system is installed to drive C:,
-that will resolve to `C:\blah.txt`, and if that does not exist you will get
-the not found error.
+According to [RFC 1738](https://datatracker.ietf.org/doc/html/rfc1738),
+`file://` URLs must contain a host component, but it is ignored by most
+implementations. In the above example, `D:` is treated as the host component,
+and is taken away. Thus, curl tries to open `/blah.txt`. If your system is
+installed to drive C:, that will resolve to `C:\blah.txt`, and if that does
+not exist you will get the not found error.
To fix this problem, use `file://` URLs with *three* leading slashes:
docs/INFRASTRUCTURE.md+3 -3
@@ -100,11 +100,11 @@ company). The machine is physically located in Sweden.
curl release tarballs are hosted on https://curl.se/download.html. They are
uploaded there at release-time by the release manager.
-curl-for-win downloads are hosted on https://curl.se/windows and are uploaded
+curl-for-win downloads are hosted on https://curl.se/windows/ and are uploaded
to the server by Viktor Szakats.
-curl-for-QNX downloads are hosted on <https://curl.se/qnx> and are uploaded to
-the server by Daniel Stenberg.
+curl-for-QNX downloads are hosted on <https://curl.se/qnx/> and are uploaded
+to the server by Daniel Stenberg.
Daily release tarball-like snapshots are generated automatically and are
provided for download at <https://curl.se/snapshots/>.
docs/KNOWN_BUGS.md+9 -7
@@ -161,7 +161,7 @@ Passing in a Unicode filename with -o:
Passing in Unicode character with -d:
- [curl issue 12231](https://github.com/curl/curl/issues/12231)
+[curl issue 12231](https://github.com/curl/curl/issues/12231)
Windows Unicode builds use the home directory in current locale.
@@ -215,8 +215,10 @@ what `winhttp` does. See https://curl.se/bug/view.cgi?id=535
## NTLM does not support password with Unicode 'SECTION SIGN' character
- https://en.wikipedia.org/wiki/Section_sign
- [curl issue 2120](https://github.com/curl/curl/issues/2120)
+Code point: U+00A7
+
+https://en.wikipedia.org/wiki/Section_sign
+[curl issue 2120](https://github.com/curl/curl/issues/2120)
## libcurl can fail to try alternatives with `--proxy-any`
@@ -231,7 +233,7 @@ using NTLM.
## Do not clear digest for single realm
- [curl issue 3267](https://github.com/curl/curl/issues/3267)
+[curl issue 3267](https://github.com/curl/curl/issues/3267)
## SHA-256 digest not supported in Windows SSPI builds
@@ -243,7 +245,7 @@ with `SEC_E_QOP_NOT_SUPPORTED` which causes curl to fail with
Microsoft does not document supported digest algorithms and that `SEC_E` error
code is not a documented error for `InitializeSecurityContext` (digest).
- [curl issue 6302](https://github.com/curl/curl/issues/6302)
+[curl issue 6302](https://github.com/curl/curl/issues/6302)
## curl never completes Negotiate over HTTP
@@ -306,7 +308,7 @@ In the `SSH_SFTP_INIT` state for libssh, the ssh session working mode is set
to blocking mode. If the network is suddenly disconnected during sftp
transmission, curl is stuck, even if curl is configured with a timeout.
- [curl issue 8632](https://github.com/curl/curl/issues/8632)
+[curl issue 8632](https://github.com/curl/curl/issues/8632)
## Cygwin: "WARNING: UNPROTECTED PRIVATE KEY FILE!"
@@ -494,7 +496,7 @@ cannot be built.
## HTTP/2 prior knowledge over proxy
- [curl issue 12641](https://github.com/curl/curl/issues/12641)
+[curl issue 12641](https://github.com/curl/curl/issues/12641)
## HTTP/2 frames while in the connection pool kill reuse
docs/TODO.md+2 -2
@@ -530,8 +530,8 @@ for 1) efficiency and 2) safety.
## Support DANE
[DNS-Based Authentication of Named Entities
-(DANE)](https://www.rfc-editor.org/rfc/rfc6698.txt) is a way to provide SSL
-keys and certs over DNS using DNSSEC as an alternative to the CA model.
+(DANE)](https://datatracker.ietf.org/doc/html/rfc6698) is a way to provide
+SSL keys and certs over DNS using DNSSEC as an alternative to the CA model.
A patch was posted on March 7 2013
(https://curl.se/mail/lib-2013-03/0075.html) but it was a too simple approach.
docs/TheArtOfHttpScripting.md+2 -2
@@ -91,7 +91,7 @@ SPDX-License-Identifier: curl
The Uniform Resource Locator format is how you specify the address of a
particular resource on the Internet. You know these, you have seen URLs like
- https://curl.se or https://example.com a million times. RFC 3986 is the
+ https://curl.se/ or https://example.com/ a million times. RFC 3986 is the
canonical spec. The formal name is not URL, it is **URI**.
## Host
@@ -158,7 +158,7 @@ SPDX-License-Identifier: curl
issues a GET request to the server and receives the document it asked for.
If you issue the command line
- curl https://curl.se
+ curl https://curl.se/
you get a webpage returned in your terminal window. The entire HTML document
this URL identifies.
docs/cmdline-opts/_WWW.md+1 -1
@@ -1,4 +1,4 @@
<!-- Copyright (C) Daniel Stenberg, <[email protected]>, et al. -->
<!-- SPDX-License-Identifier: curl -->
# WWW
-https://curl.se
+https://curl.se/
docs/examples/10-at-a-time.c+45 -45
@@ -31,53 +31,53 @@
#include <curl/curl.h>
static const char *urls[] = {
- "https://www.microsoft.com",
- "https://opensource.org",
- "https://www.google.com",
- "https://www.yahoo.com",
- "https://www.ibm.com",
- "https://www.mysql.com",
- "https://www.oracle.com",
- "https://www.ripe.net",
- "https://www.iana.org",
- "https://www.amazon.com",
- "https://www.netcraft.com",
- "https://www.heise.de",
- "https://www.chip.de",
- "https://www.ca.com",
- "https://www.cnet.com",
- "https://www.mozilla.org",
- "https://www.cnn.com",
- "https://www.wikipedia.org",
- "https://www.dell.com",
- "https://www.hp.com",
- "https://www.cert.org",
- "https://www.mit.edu",
- "https://www.nist.gov",
- "https://www.ebay.com",
- "https://www.playstation.com",
- "https://www.uefa.com",
- "https://www.ieee.org",
- "https://www.apple.com",
- "https://www.symantec.com",
- "https://www.zdnet.com",
+ "https://www.microsoft.com/",
+ "https://opensource.org/",
+ "https://www.google.com/",
+ "https://www.yahoo.com/",
+ "https://www.ibm.com/",
+ "https://www.mysql.com/",
+ "https://www.oracle.com/",
+ "https://www.ripe.net/",
+ "https://www.iana.org/",
+ "https://www.amazon.com/",
+ "https://www.netcraft.com/",
+ "https://www.heise.de/",
+ "https://www.chip.de/",
+ "https://www.ca.com/",
+ "https://www.cnet.com/",
+ "https://www.mozilla.org/",
+ "https://www.cnn.com/",
+ "https://www.wikipedia.org/",
+ "https://www.dell.com/",
+ "https://www.hp.com/",
+ "https://www.cert.org/",
+ "https://www.mit.edu/",
+ "https://www.nist.gov/",
+ "https://www.ebay.com/",
+ "https://www.playstation.com/",
+ "https://www.uefa.com/",
+ "https://www.ieee.org/",
+ "https://www.apple.com/",
+ "https://www.symantec.com/",
+ "https://www.zdnet.com/",
"https://www.fujitsu.com/global/",
- "https://www.supermicro.com",
- "https://www.hotmail.com",
- "https://www.ietf.org",
- "https://www.bbc.co.uk",
- "https://news.google.com",
- "https://www.foxnews.com",
- "https://www.msn.com",
- "https://www.wired.com",
- "https://www.sky.com",
- "https://www.usatoday.com",
- "https://www.cbs.com",
+ "https://www.supermicro.com/",
+ "https://www.hotmail.com/",
+ "https://www.ietf.org/",
+ "https://www.bbc.co.uk/",
+ "https://news.google.com/",
+ "https://www.foxnews.com/",
+ "https://www.msn.com/",
+ "https://www.wired.com/",
+ "https://www.sky.com/",
+ "https://www.usatoday.com/",
+ "https://www.cbs.com/",
"https://www.nbc.com/",
- "https://slashdot.org",
- "https://www.informationweek.com",
- "https://apache.org",
- "https://www.un.org",
+ "https://slashdot.org/",
+ "https://www.informationweek.com/",
+ "https://apache.org/",
+ "https://www.un.org/",
};
#define MAX_PARALLEL 10 /* number of simultaneous transfers */
docs/examples/crawler.c+1 -1
@@ -47,7 +47,7 @@ static int max_total = 20000;
static int max_requests = 500;
static size_t max_link_per_page = 5;
static int follow_relative_links = 0;
-static const char *start_page = "https://www.reuters.com";
+static const char *start_page = "https://www.reuters.com/";
static int pending_interrupt = 0;
static void sighandler(int dummy)
docs/examples/maxconnects.c+2 -2
@@ -40,8 +40,8 @@ int main(void)
curl = curl_easy_init();
if(curl) {
const char *urls[] = {
- "https://example.com",
- "https://curl.se",
+ "https://example.com/",
+ "https://curl.se/",
"https://www.example/",
NULL /* end of list */
};
docs/examples/simplessl.c+1 -1
@@ -84,7 +84,7 @@ int main(void)
goto error;
/* what call to write: */
- curl_easy_setopt(curl, CURLOPT_URL, "HTTPS://secure.site.example");
+ curl_easy_setopt(curl, CURLOPT_URL, "https://secure.site.example/");
curl_easy_setopt(curl, CURLOPT_HEADERDATA, headerfile);
#ifdef USE_ENGINE
docs/internals/CONNECTION-FILTERS.md+4 -4
@@ -233,7 +233,7 @@ Users of `curl` may activate them by adding the name of the filter type to the
of an HTTP/2 request, invoke curl with:
```
-> curl -v --trace-config ids,time,http/2 https://curl.se
+> curl -v --trace-config ids,time,http/2 https://curl.se/
```
Which gives you trace output with time information, transfer+connection ids
@@ -260,7 +260,7 @@ into IPv4 and IPv6 and makes parallel attempts. The connection filter chain
looks like this:
```
-* create connection for http://curl.se
+* create connection for http://curl.se/
conn[curl.se] --> SETUP[TCP] --> HAPPY-EYEBALLS --> NULL
* start connect
conn[curl.se] --> SETUP[TCP] --> HAPPY-EYEBALLS --> NULL
@@ -276,7 +276,7 @@ The modular design of connection filters and that we can plug them into each oth
The `HAPPY-EYEBALLS` on the other hand stays focused on its side of the problem. We can use it also to make other type of connection by just giving it another filter type to try to have happy eyeballing for QUIC:
```
-* create connection for --http3-only https://curl.se
+* create connection for --http3-only https://curl.se/
conn[curl.se] --> SETUP[QUIC] --> HAPPY-EYEBALLS --> NULL
* start connect
conn[curl.se] --> SETUP[QUIC] --> HAPPY-EYEBALLS --> NULL
@@ -292,7 +292,7 @@ type that is used for `--http3` when **both** HTTP/3 and HTTP/2 or HTTP/1.1
shall be attempted:
```
-* create connection for --http3 https://curl.se
+* create connection for --http3 https://curl.se/
conn[curl.se] --> HTTPS-CONNECT --> NULL
* start connect
conn[curl.se] --> HTTPS-CONNECT --> NULL
docs/tests/TEST-SUITE.md+2 -2
@@ -214,13 +214,13 @@ SPDX-License-Identifier: curl
to drown in output. The newly introduced *connection filters* allows one to
dynamically increase log verbosity for a particular *filter type*. Example:
- CURL_DEBUG=ssl curl -v https://curl.se
+ CURL_DEBUG=ssl curl -v https://curl.se/
makes the `ssl` connection filter log more details. One may do that for
every filter type and also use a combination of names, separated by `,` or
space.
- CURL_DEBUG=ssl,http/2 curl -v https://curl.se
+ CURL_DEBUG=ssl,http/2 curl -v https://curl.se/
The order of filter type names is not relevant. Names used here are
case insensitive. Note that these names are implementation internals and
lib/curl_rtmp.c+1 -1
@@ -62,7 +62,7 @@ static Curl_recv rtmp_recv;
static Curl_send rtmp_send;
/*
- * RTMP protocol handler.h, based on https://rtmpdump.mplayerhq.hu
+ * RTMP protocol handler.h, based on https://rtmpdump.mplayerhq.hu/
*/
const struct Curl_handler Curl_handler_rtmp = {
packages/vms/curl_gnv_build_steps.txt+1 -1
@@ -38,7 +38,7 @@ time that this document was written.
[gnv.common_src]curl_*_original_src.bck is the original source of the curl kit
as provided by the curl project. [gnv.vms_src]curl-*_vms_src.bck, if present,
has the OpenVMS specific files that are used for building that are not yet in
-the curl source kits for that release distributed https://curl.se
+the curl source kits for that release distributed https://curl.se/
These backup savesets should be restored to different directory trees on
an ODS-5 volume(s) which are referenced by concealed rooted logical names.
scripts/mdlinkcheck+13 -8
@@ -71,14 +71,12 @@ my %whitelist = (
'https://curl.se/rfc/rfc2255.txt' => 1,
'https://curl.se/sponsors.html' => 1,
'https://curl.se/support.html' => 1,
- 'https://curl.se/windows' => 1,
'https://curl.se/windows/' => 1,
'https://testclutch.curl.se/' => 1,
'https://github.com/curl/curl-fuzzer' => 1,
'https://github.com/curl/curl-www' => 1,
- 'https://github.com/curl/curl.git' => 1,
'https://github.com/curl/curl/wcurl' => 1,
);
@@ -87,7 +85,7 @@ my %url;
my %flink;
# list all files to scan for links
-my @files=`git ls-files docs src lib scripts`;
+my @files=`git ls-files docs include lib scripts src`;
sub storelink {
my ($f, $line, $link) = @_;
@@ -103,6 +101,7 @@ sub storelink {
if($link =~ /^(https|http):/) {
if($whitelist{$link}) {
#print "-- whitelisted: $link\n";
+ $whitelist{$link}++;
}
# example.com is just example
elsif($link =~ /^https:\/\/(.*)example.(com|org|net)/) {
@@ -164,7 +163,7 @@ sub findlinks {
# comma, question mark, colon, closing parenthesis, backslash,
# closing angle bracket, whitespace, pipe, backtick, semicolon
elsif(/(https:\/\/[a-z0-9.\/:%_+@-]+[^."'*\#,?:\)> \t|`;\\])/i) {
- #print "RAW ";
+ #print "RAW '$_'\n";
storelink($f, $line, $1);
}
$line++;
@@ -202,10 +201,16 @@ for my $f (@files) {
}
}
-#for my $u (sort keys %url) {
-# print "$u\n";
-#}
-#exit;
+for my $u (sort keys %whitelist) {
+ if($whitelist{$u} == 1) {
+ printf "warning: unused whitelist entry: '$u'\n";
+ }
+}
+
+for my $u (sort keys %url) {
+ print "$u\n";
+}
+exit;
my $error;
my @errlist;