git: 5ab82f33cb - main - Firefox opensearch autocomplete workarounds

From: Wolfram Schneider <wosch_at_FreeBSD.org>
Date: Wed, 04 Jan 2023 18:29:00 UTC
The branch main has been updated by wosch:

URL: https://cgit.FreeBSD.org/doc/commit/?id=5ab82f33cb9e28f730881431252cae8a4ab4a2bd

commit 5ab82f33cb9e28f730881431252cae8a4ab4a2bd
Author:     Wolfram Schneider <wosch@FreeBSD.org>
AuthorDate: 2023-01-04 17:34:40 +0000
Commit:     Wolfram Schneider <wosch@FreeBSD.org>
CommitDate: 2023-01-04 17:34:40 +0000

    Firefox opensearch autocomplete workarounds
---
 website/content/en/cgi/ports.cgi | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/website/content/en/cgi/ports.cgi b/website/content/en/cgi/ports.cgi
index e163f4a23f..0e6d425ee6 100755
--- a/website/content/en/cgi/ports.cgi
+++ b/website/content/en/cgi/ports.cgi
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -T
 #
-# Copyright (c) 1996-2022 Wolfram Schneider <wosch@FreeBSD.ORG>
+# Copyright (c) 1996-2023 Wolfram Schneider <wosch@FreeBSD.ORG>
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -496,7 +496,7 @@ sub footer {
 
     print qq{
 <img align="right" src="$hsty_base/gifs/powerlogo.gif" alt="Powered by FreeBSD" />
-&copy; 1996-2022 by Wolfram Schneider. All rights reserved.<br />
+&copy; 1996-2023 by Wolfram Schneider. All rights reserved.<br />
 };
 
 #print q{$FreeBSD$} . "<br />\n";
@@ -507,6 +507,24 @@ sub footer {
     print qq{<hr noshade="noshade" />\n<p />\n};
 }
 
+sub check_query {
+    my ($query, $sourceid) = @_;
+
+    $query =~ s/"/ /g;
+    $query =~ s/^\s+//;
+    $query =~ s/\s+$//;
+
+    # XXX: Firefox opensearch autocomplete workarounds
+    if ($sourceid eq 'opensearch') {
+	# remove space before a dot 
+	$query =~ s/ \././g;
+	# remove space between double colon
+	$query =~ s/: :/::/g;
+    }
+
+    return $query;
+}
+
 sub check_input {
     if ($query) {
         $stype = "all" if !$stype;
@@ -571,6 +589,7 @@ $section     = $form{'sektion'};
 $section     = 'all' if ( !$section );
 $query       = $form{'query'};
 $stype       = $form{'stype'};
+$sourceid    = $form{'sourceid'} // "";
 $script_name = &env('SCRIPT_NAME');
 
 if ( $path_info eq "/source" ) {
@@ -602,9 +621,7 @@ if ( !$query && $query_string =~ /^([^=&]+)$/ ) {
 # automatically read collections, need only 0.2 sec on a pentium
 @sec = &readcoll;
 
-$query =~ s/"/ /g;
-$query =~ s/^\s+//;
-$query =~ s/\s+$//;
+$query = &check_query($query, $sourceid);
 &forms;
 
 if ( $query_string eq "" || !$query ) {