git: e4d3f14695 - main - improve URL matching
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 28 Apr 2024 18:21:40 UTC
The branch main has been updated by wosch: URL: https://cgit.FreeBSD.org/doc/commit/?id=e4d3f14695b1e2a23143ca940e3b73df224dcb43 commit e4d3f14695b1e2a23143ca940e3b73df224dcb43 Author: Wolfram Schneider <wosch@FreeBSD.org> AuthorDate: 2024-04-28 18:19:51 +0000 Commit: Wolfram Schneider <wosch@FreeBSD.org> CommitDate: 2024-04-28 18:19:51 +0000 improve URL matching for trailing '>', comma and other characters PR: 266336 --- website/content/en/cgi/man.cgi | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/website/content/en/cgi/man.cgi b/website/content/en/cgi/man.cgi index 8ddfa7f27f..d82411491b 100755 --- a/website/content/en/cgi/man.cgi +++ b/website/content/en/cgi/man.cgi @@ -1579,6 +1579,18 @@ sub manpath_without_ports { return join(":", @list); } +# strip trailing dots, comma etc. from an URL +sub url_strip { + my $url = shift; + my $part = shift; + + if ($url =~ m/(.+)([,\.])$/) { + return ($1, $1, $2); + } else { + return ($url, $url, ""); + } +} + sub man { local ( $name, $section, $arch ) = @_; local ( $_, $title, $head, *MAN ); @@ -1842,8 +1854,8 @@ s/([a-z0-9_\-\.]+\@[a-z0-9\-\.]+\.[a-z]+)/<a href="mailto:$1">$1<\/A>/gi; } # detect URLs in manpages - if (m,\b(ftp|http|https)://,) { - s,((ftp|http|https)://[^\s<>\)]+),<a href="$1">$1</a>,gi; + if (m,\b(http|https)://,) { + s|(https?://[^\s\)&<>'`";\]\[]+)|sprintf("<a href=\"%s\">%s</a>%s", &url_strip($1))|egi; } if (s%^(<b>.*?</b>)+\n?$% ($str = $1) =~ s,(<b>|</b>),,g; $str%ge) {