diff --git a/website/content/en/cgi/ports.cgi b/website/content/en/cgi/ports.cgi
index 96a3a8519f..77f359a861 100755
--- a/website/content/en/cgi/ports.cgi
+++ b/website/content/en/cgi/ports.cgi
@@ -1,657 +1,641 @@
#!/usr/local/bin/perl -T
#
# SPDX-License-Identifier: BSD-2-Clause
# Copyright (c) 1996-2026 Wolfram Schneider Last database update: @{[ &last_update ]}
The FreeBSD Ports and Packages Collection offers a simple way for users and administrators to install applications.
"Package Name" searches for the name of a port or distribution.
"Description" searches case-insensitive in a short comment about the port.
"All" searches case-insensitive for the package name and in the
description about the port.
The FreeBSD Ports and Packages Collection offers a simple way for
users and administrators to install applications.
Package Name searches for the name of a port or distribution.
Description searches case-insensitive in a short comment about the port.
All searches case-insensitive for the package name and in the
description about the port.
Maintainer searches for the email address of the port maintainer.
Requires searches for ports which depends on this port.
Handbook: Using the Ports Collection
You may also search the
ports manual pages.
The script ports.cgi use the file
$ports_database
as database for its operations. $ports_database is updated automatically every
two hours.
@{[ &last_update_message ]}
+General questions about FreeBSD ports should be sent to
+$mailtoList
+}
. qq{Category $1}
. "
\n\n";
$out_sec = $1;
}
}
$counter++;
$pathB = $path;
$pathB =~ s/^$localPrefix/ports/o;
$path =~ s/^$localPrefix/$remotePrefixFtp/o;
$descfile =~ s/^$localPrefix/$remotePrefixFtp/o;
$version = &encode_url($version);
#$version =~ s/[\+,]/X/g;
local ($l) = $path;
$l =~ s%^$remotePrefixFtp%$remotePrefixRepo/log%o;
local ($t) = $path;
$t =~ s%^$remotePrefixFtp%$remotePrefixRepo/tree%o;
$descfile =~ s%^$remotePrefixFtp%$remotePrefixRepo/plain%o;
print
qq{
\n};
print qq[Description :\n];
print qq[Changes
\n];
print qq{Maintained by: $email
\n};
local (@s) = split( /\s+/, $sections );
if ( $#s > 0 ) {
print qq{Also listed in: };
foreach (@s) {
print qq{$_ }
if $_ ne $out_sec;
}
print "
\n";
}
if ( $bdepends || $rdepends ) {
local ($flag) = 0;
local ($last) = '';
print qq{Requires: };
foreach ( sort split( /\s+/, "$bdepends $rdepends" ) ) {
# delete double entries
next if $_ eq $last;
$last = $_;
print ", " if $flag;
$flag++;
print qq{$_};
}
print "
\n";
}
print qq[
@{[ &footer_links ]}
};
}
-sub footer {
-
- print <
- © 1996-2026 by Wolfram Schneider. All rights reserved.
-
- General questions about FreeBSD ports should be sent to
- $mailtoList
-
- @{[ &last_update_message ]}
-
-
-
-
-EOF
-}
-
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;
if (
!(
$stype eq "name"
|| $stype eq "text"
|| $stype eq "maintainer"
|| $stype eq "requires"
|| $stype eq "all"
)
)
{
print
"unknown search type, use `all', `text', `name', 'requires', or `maintainer'\n";
warn "unknown search type ``", escapeHTML($stype),
"'', use `all', `text', `name', 'requires', or `maintainer'\n"
if $debug >= 1;
&exit(0);
}
}
$max = int($max);
if ( $max <= 0 || $max > $max_hits ) {
warn "reset max=$max to $max_hits_default\n";
$max = $max_hits_default;
}
}
sub help {
print <FreeBSD Ports Search Help
External Links
Documentation
Updates
Copyright
Copyright (c) 1996-2026 Wolfram Schneider <wosch\@FreeBSD.org>
+Questions
+
EOF
}
sub footer_links {
return <
Number of hits: $counter_message\n
\n"; print &footer_links; } print qq{