From 0785565f4bc4a2bedf1de80f04928a59d931d918 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 25 Apr 2024 17:42:17 +0200 Subject: [PATCH] dlwiz: remove Remove the download wizard. It is broken and has probably been broken for a while without anyone noticing. It has served its purpose and is hereby retired. Ref: #344 Closes #345 --- _download.html | 4 - _newslog.html | 4 +- dlwiz/index.cgi | 945 ------------------------------------------------ 3 files changed, 2 insertions(+), 951 deletions(-) delete mode 100755 dlwiz/index.cgi diff --git a/_download.html b/_download.html index 6e507ba49..f450599ea 100644 --- a/_download.html +++ b/_download.html @@ -52,10 +52,6 @@ -SUBTITLE(Download Wizard) -

- Need help to select what to download? Use the curl Download Wizard! - SUBTITLE(Packages)

#include "dl/files.html" diff --git a/_newslog.html b/_newslog.html index 4b71d52eb..b1dee87e8 100644 --- a/_newslog.html +++ b/_newslog.html @@ -2889,8 +2889,8 @@ NDATE(4 October 2004) NCOLS - The curl Download Wizard helps you - find and pick the correct file to download! + The curl Download Wizard helps you find and pick the correct file to + download! NCOLE diff --git a/dlwiz/index.cgi b/dlwiz/index.cgi deleted file mode 100755 index ce20c358e..000000000 --- a/dlwiz/index.cgi +++ /dev/null @@ -1,945 +0,0 @@ -#!/usr/bin/perl - -require "../date.pm"; -require "../dl/pbase.pm"; -require "../dl/pix.pm"; -require "../curl.pm"; -require CGI; - -print "Content-Type: text/html; charset=UTF-8\n\n"; - -my $ua = $ENV{'HTTP_USER_AGENT'}; -my $onlyone; -my $sel_os; -my $sel_cpu; -my $sel_flav; -my $sel_ver; - -my %typedesc=( - 'devel' => < This is for libcurl development - but does not always contain libcurl -itself. Most likely header files and documentation. If you intend to compile -or build something that uses libcurl, this is most likely the package you -want. - -MOO - , - 'bin' => <You will get a pre-built 'curl' binary from this link (or in some cases, by -using the information that is provided at the page this link takes you). You -may or may not get 'libcurl' installed as a shared library/DLL. - -MOO - , - 'source' => <You will not download a pre-built binary from this link. You will instead -get a link to site with the curl source, adjusted for your platform. You will -need to have a compiler setup and working to be able to build curl from a -source package. -MOO - , - 'lib' => <This is a pure binary libcurl package, possibly including header files and -documentation, but without the command line tool and other cruft. If you want -libcurl for a program that uses libcurl, this is most likely the package you -want. - -MOO - - ); - -my %typelonger = ('bin' => 'curl executable', - 'devel' => 'libcurl development', - 'source' => 'source code', - 'lib' => 'libcurl', - '*' => 'Show All'); - -#print "

" . CGI::escapeHTML($ua) . "

\n"; - -sub vernum { - my ($v)=@_; - my @a = split(/\./, $v); - return ($a[0]<<16) | ($a[1] << 8) | $a[2]; -} - -&header("Download Wizard"); -&where("Download", "/download.html", "Download Wizard"); -&title("curl Download Wizard"); - -$database = "../dl/data/databas.db"; - -my $db=new pbase; -$db->open($database); - -my @all = $db->find_all("typ"=>"^entry\$","-hide"=>"^Yes\$"); - -printf("
Number of packages: %d", $#all+1); - -for $e (@all) { - my $o = $$e{'os'}; - $os{$o}++; -} - -printf("
Number of OSes covered: %d
", scalar(keys %os)); - -print < Welcome to the download wizard. This helps you figure out what package to - download. Proceed and answer the questions below! Show all Downloads - -MOO - ; - -# CGI::escapeHTML() should be the identity function for the data types we -# expect here, but it prevents XSS attacks when we print them out -my $pick_os = CGI::escapeHTML(scalar CGI::param('os')); -my $pick_flav = CGI::escapeHTML(scalar CGI::param('flav')); -my $pick_ver = CGI::escapeHTML(scalar CGI::param('ver')); -my $pick_cpu = CGI::escapeHTML(scalar CGI::param('cpu')); -my $pick_type = CGI::escapeHTML(scalar CGI::param('type')); - -my $fl = $pick_flav; -if($pick_flav eq "-") { - $fl =""; -} - -if($pick_type) { - print <Restart the Download Wizard! -MOO -; -} - -if(0) { -print < -The download wizard is still to be seen as a beta application. Please send your -comments and feedback to the curl-users mailing list or to me personally (daniel\@haxx.se). - - - -MOO - ; -} -sub selected { - my ($s) = @_; - print "$s"; -} - -sub showsteps { - my @step=('Package Type', 'OS', 'Flavour', - 'OS Version', 'CPU'); - my $r; - my $img = " → "; - my $escos=CGI::escape($pick_os); - - print "

"; - for $s (@step) { - if($r) { - print "\n".$img; - } - $r++; - if($s eq "Package Type" && $pick_type) { - print ""; - my $t = $typelonger{$pick_type}; - selected($t?$t:"[invalid]"); - print ""; - next; - } - if($s eq "OS" && $pick_os) { - my $p; - if($onlyone !~ /os /) { - print ""; - $p=""; - } - if($pick_os eq "-") { - selected("Platform Independent"); - } - else { - selected("$pick_os"); - } - print $p; - next; - } - if($s eq "Flavour" && $pick_flav) { - my $p; - if($onlyone !~ /flav /) { - print ""; - $p=""; - } - if($pick_flav eq "-") { - selected("Generic"); - } - else { - selected("$pick_flav"); - } - print $p; - next; - } - if($s eq "OS Version" && $pick_ver) { - my $p; - if($onlyone !~ /ver /) { - print ""; - $p=""; - } - if($pick_ver eq "-") { - selected("Unspecified Version"); - } - else { - selected("$pick_ver"); - } - print $p; - next; - } - if($s eq "CPU" && $pick_cpu) { - my $p; - if($onlyone !~ /cpu /) { - print ""; - $p=""; - } - if($pick_cpu eq "-") { - selected("Any CPU"); - } - else { - selected("$pick_cpu"); - } - print $p; - next; - } - - print "$s\n"; - } - - if($pick_cpu) { - # print "$img Download!"; - } -} - -if(!$pick_type) { - # no package type yet - my %type; - for $e (@all) { - my $t = $$e{'type'}; - $type{$t}++; - } - - my $numtype = scalar(keys %type); - - if($numtype == 1) { - my @t=keys %type; - $pick_type = $t[0]; - $onlyone .= "type "; - } - else { - showsteps(); - - subtitle("Select Type of Package"); - - print "

We provide packages of different types. Select one (or select 'show all' to view all types)\n"; - - for(sort keys %type) { - print "

".$typelonger{$_}." - ".$typedesc{$_}."
\n"; - } - print "
Show All - Display all known package types.
\n"; - - } - -} - -if($pick_type && !$pick_os) { - - if($ua =~ /Linux/i) { - $sel_os = "Linux"; - } - elsif($ua =~ /IRIX/i) { - $sel_os = "IRIX"; - } - elsif($ua =~ /(SunOS [1-4]\b)/i) { - $sel_os = "SunOS"; - } - elsif($ua =~ /(SunOS|Solaris)/i) { - $sel_os = "Solaris"; - } - elsif($ua =~ /BeOS/i) { - $sel_os = "BeOS"; - } - elsif($ua =~ /QNX/i) { - $sel_os = "QNX"; - } - elsif($ua =~ /HP-UX/i) { - $sel_os = "HPUX"; - } - elsif($ua =~ /FreeBSD/i) { - $sel_os = "FreeBSD"; - } - elsif($ua =~ /NetBSD/i) { - $sel_os = "NetBSD"; - } - elsif($ua =~ /OpenBSD/i) { - $sel_os = "OpenBSD"; - } - elsif($ua =~ /AIX/i) { - $sel_os = "AIX"; - } - elsif($ua =~ /Amiga/i) { - $sel_os = "AmigaOS"; - } - elsif($ua =~ /Mac/i) { - $sel_os = "Mac OS X"; - } - elsif($ua =~ /iPhone|iPad/i) { - $sel_os = "Apple iOS"; - } - elsif($ua =~ /RISC OS|NetSurf/i) { - $sel_os = "RISC OS"; - } - elsif($ua =~ /Symbian|EPOC/i) { # EPOC is on from the old Psions - $sel_os = "Symbian OS"; - } - elsif($ua =~ /OSF1/i) { - $sel_os = "Tru64"; - } - elsif($ua =~ /VMS/i) { - $sel_os = "VMS"; - } - elsif($ua =~ /DOS/i) { - $sel_os = "DOS"; - } - elsif($ua =~ /AtheOS|Syllable/i) { - $sel_os = "Syllable"; - } - elsif($ua =~ /OS\/2/i) { - $sel_os = "OS/2"; - } - elsif($ua =~ /Palm/i) { - $sel_os = "Palm OS"; - } - elsif($ua =~ /Embedix/i) { # Embedded Linux distro from Lineo - $sel_os = "Linux"; - } - elsif($ua =~ /Qtopia/i) { # Linux-based GUI - $sel_os = "Linux"; - } - elsif($ua =~ /MOT-E2/i) { # Motorola ROKR E2 phone device - $sel_os = "Linux"; - } - elsif($ua =~ /P800|P900/i) { # Sony Ericsson P800/P900 phone - $sel_os = "Symbian OS"; - } - elsif($ua =~ /Indy Library|Microsoft/i) { # Windows-only client library - $sel_os = "Win32"; - } - elsif($ua =~ /Windows 3\.|Win16/i) { - $sel_os = "DOS"; - } - # Windows goes near the end because some other platforms also say Windows - # for compatibility reasons - elsif($ua =~ /(windows|win32|Win98|Win95|Win9x|WinNT)/i) { - $sel_os = "Win32"; - } - elsif($ua =~ /Win64|WOW64/i) { - $sel_os = "Win64"; - } - elsif($ua =~ /(Unix|Lynx|w3m|Dillo|MMM|Grail|Mosaic|amaya|Konqueror|Links|gzilla)/i) { - $sel_os = "Linux"; # we don't know these are Linux, we just guess - } - elsif($ua =~ /(libcurl|Python-urllib|Wget|lwp|libwww-perl)/i) { - $sel_os = "no idea"; # automated agents - } - - if(!$sel_os && $ua) { - print "

Beta Alert! We couldn't detect your OS, please inform me (daniel\@haxx.se) and include this User-Agent string in the report: \""; - print CGI::escapeHTML($ua) . "\"

\n"; - } - - #print "

If you want a curl package for the OS you are currently using, you want a package for $sel_os"; - - my $c; - my %os; - for $e (@all) { - if((($pick_type eq "*") || ($$e{'type'} eq $pick_type))) { - $os{$$e{'os'}}++; - } - } - - my $numos = scalar(keys %os); - if($numos == 0 ) { - showsteps(); - print "

Internal error: We found no operating systems for the given package type: $pick_type\n"; - } - elsif($numos == 1 ) { - my @o =keys %os; - $pick_os = $o[0]; - $onlyone .= "os "; - } - else { - - showsteps(); - - subtitle("Select Operating System"); - - print "

\n", - "\n", - "Show package for: ", - "", - "
"; - - print < If you miss an operating system in this listing, it is most likely -because we don\'t know any packages of your selected type for that operating -system. - -MOO -; - } -} - -if(!$pick_flav && $pick_os && $pick_type) { - # An OS is picked but a flavour has not been picked - - my %flav; - for $e (@all) { - if(($$e{'os'} eq $pick_os) && - (($pick_type eq "*") || ($$e{'type'} eq $pick_type))) { - my $f = $$e{'flav'}; - $flav{$f}++; - } - } - - my $numflav = scalar(keys %flav); - - if($numflav == 0) { - showsteps(); - - print "

Internal error: We found no flavour at all for $pick_os\n"; - } - elsif($numflav == 1) { - my @f=keys %flav; - $pick_flav = $f[0]; - if($pick_flav ne "-") { - $fl = $pick_flav; - } - $onlyone .= "flav "; - } - else { - $sel_flav = ""; - - # Linux flavours (should really check for that first) - if($ua =~ /mdk|Mandriva/i) { - $sel_flav = "Mandriva"; - } - elsif($ua=~ /ubuntu/i) { - $sel_flav = "Ubuntu"; # Must be before Debian, which can be in the UA, too - } - elsif($ua=~ /Debian|kanotix/i) { # Debian and Debian-based distros - $sel_flav = "Debian"; - } - elsif($ua=~ /gentoo/i) { - $sel_flav = "Gentoo"; - } - elsif($ua=~ /Red Hat|CentOS/i) { - $sel_flav = "Redhat"; - } - elsif($ua=~ /SUSE/i) { - $sel_flav = "Suse"; - } - elsif($ua=~ /Fedora|fc[\d]/i) { - $sel_flav = "Fedora"; - } - elsif($ua=~ /ASPLinux/i) { - $sel_flav = "ASP"; - } - elsif($ua=~ /VineLinux/i) { - $sel_flav = "Vine"; - } - elsif($ua=~ /Maemo/i) { - $sel_flav = "Maemo"; - } - elsif($ua=~ /Android/i) { - $sel_flav = "Android"; - } - - # Non-Linux flavours - elsif($ua=~ /cygwin/i) { - $sel_flav = "cygwin"; - } - elsif($ua=~ /PocketPC|Windows CE/i) { - $sel_flav = "WinCE"; - } - - # Some indicators of a PDA device - # Not necessarily Familiar, but that's the best we have to offer - elsif($ua=~ /Qtopia|Qt *embedded|embedix|PDA/i) { - $sel_flav = "Familiar"; - } - - showsteps(); - - subtitle("Select for What Flavour"); - - printf ("

We have %s packages listed for %d different flavours of $pick_os.\n", - $pick_type eq "*"?"":"".$typelonger{$pick_type}."", - $numflav); - - print "

\n", - "", - "", - "Show package for: ", - "", - "
"; - } -} - -if($pick_os && $pick_flav && !$pick_ver) { - my %ver; - for $e (@all) { - if(($$e{'os'} eq $pick_os) && - (($pick_type eq "*") || ($$e{'type'} eq $pick_type)) && - ($$e{'flav'} eq $pick_flav)) { - my $v = $$e{'osver'}; - $ver{"$v"}++; - } - } - - my $numver = scalar(keys %ver); - - if($numver == 0) { - showsteps(); - - print "

Internal error: We found no version at all for $pick_flav\n"; - } - elsif($numver == 1) { - my @v=keys %ver; - $pick_ver = $v[0]; - $onlyone .= "ver "; - } - else { - $sel_ver = ""; - if($pick_flav eq "Fedora" && $ua =~ /fc(\d+)/i) { - $sel_ver = $1; - } - elsif($pick_flav eq "Redhat" && $ua =~ /centos([\d\.]+)/i) { - $sel_ver = "RHEL" . $1; - } - elsif($pick_flav eq "Redhat" && $ua =~ /\bEL([\d\.]+)/i) { - $sel_ver = "RHEL" . $1; - } - elsif($pick_flav eq "Ubuntu" && $ua =~ /\bUbuntu\/([\w\.]+)/i) { - $sel_ver = $1; - } - elsif($pick_os eq "Win32" && $ua =~ /Windows NT ?[56]\b|Windows XP/i) { - $sel_ver = "2000/XP"; - } - elsif($pick_os eq "AIX" && $ua =~ /AIX ([\d\.]+)/i) { - $sel_ver = $1; - } - elsif($pick_os eq "HPUX" && $ua =~ /HP-UX [A-Z]\.([\d\.]+)/i) { - $sel_ver = $1; - } - elsif($pick_os eq "IRIX" && $ua =~ /IRIX(64)? ([\d\.]+)/i) { - $sel_ver = $2; - } - elsif($pick_os eq "Solaris" && $ua =~ /SunOS 5\.([2-6]+)/i) { - $sel_ver = "2." . $1; - } - elsif($pick_os eq "Solaris" && $ua =~ /SunOS 5\.([7-9]+)|SunOS 5\.(1\d+)/i) { - $sel_ver = $1 . $2; - } - - showsteps(); - - subtitle("Select which $fl $pick_os Version"); - - printf ("

We have packages listed for %d different versions of $fl $pick_os.\n", - $numver); - - print "

\n", - "", - "", - "", - "Show package for $fl $pick_os version: ", - "", - "", - "
"; - } -} - -if($pick_os && $pick_flav && $pick_ver && !$pick_cpu) { - my %cpu; - for $e (@all) { - if( ($$e{'os'} eq $pick_os) && - (($pick_type eq "*") || ($$e{'type'} eq $pick_type)) && - (($pick_flav eq "*") || ($$e{'flav'} eq $pick_flav)) && - (($pick_ver eq "*") || ($$e{'osver'} eq $pick_ver))) { - my $c = $$e{'cpu'}; - $cpu{$c}++; - } - } - - my $numcpu = scalar(keys %cpu); - - if($numcpu == 0) { - showsteps(); - print "

Internal error: We found no CPUs at all for this version of this OS!\n"; - } - elsif($numcpu == 1) { - my @c = (keys %cpu); - $pick_cpu = $c[0]; - $onlyone .= "cpu "; - } - else { - $sel_cpu = "i386"; # naive default assumption - if($ua =~ /68K/i) { - $sel_cpu = "68k"; - } - elsif($ua =~ /PPC/i) { - $sel_cpu = "PPC"; - } - elsif($ua =~ /sun4|sparc/i) { - $sel_cpu = "Sparc"; - } - elsif($ua =~ /ia64/i) { - $sel_cpu = "ia64"; - } - elsif($ua =~ /x86_64|athlon|amd64|x64|WOW64/i) { - $sel_cpu = "x86_64"; - } - elsif($ua =~ /alpha|AXP/i) { - $sel_cpu = "Alpha"; - } - elsif($ua =~ /arm|iPhone|iPad|Android/i) { - $sel_cpu = "StrongARM"; - } - elsif($ua =~ /avr32/i) { - $sel_cpu = "AVR32"; - } - - my $ver=$pick_ver; - if($ver eq "-" || $ver eq "*") { - $ver = ""; - } - showsteps(); - - subtitle("Select for What CPU"); - - printf ("

We have packages listed for %d different CPUs for $fl $pick_os $ver.\n", - $numcpu); - - print "

\n", - "", - "", - "", - "", - "Show package for $fl $pick_os $ver on", - " ", - "", - "
"; - } -} - -sub single { - my ($e) = @_; - - my $t=$$e{'type'}; - my $file=$$e{'file'}; - my $show=$file; - my $ssl=$$e{'ssl'} eq "No"?"no":""; - my $ssh=$$e{'ssh'} eq "Yes"?"SSH enabled":""; - - my $sslenable=$$e{'ssl'} eq "No"?"disabled":"enabled"; - my $pack=$$e{'pack'}; - my $aboutver; - my $version=$$e{'curl'}; - my $provided = $$e{'name'} ne "-"?"
Provided by: $$e{'name'}":""; - - # check what's available right *now* - &latest::scanstatus($latest::wwwdir); - - if($latest::headver ne $version) { - my $premail; - my $postmail; - my $em = $$e{'email'}; - my $name = $$e{'name'}; - my $maint; - if($name && $name ne "-") { - $maint = "($name) "; - } - if($em && ($em ne "-")) { - if($em =~ /:\/\//) { - # plain URL - $premail=""; - } - elsif(($em =~ /\@/) && ($em !~ /^mailto:/)) { - # email address - $premail=""; - } - $postmail=""; - } - $aboutver = <This package is not built from the latest version available. This is -version $version while the latest source available has version -$latest::headver. This might be OK for you. If not, contact -the maintainer of this package ${premail}${maint}${postmail} and ask kindly for an -update. Or get a 'source' package and build a newer one yourself. - -MOO -; - } - - my $l=length($show); - if($l > 50) { - $show = substr($show, 0, 35)."...".substr($show, $l-15); - } - - if($file !~ /\/\//) { - $file="/download/$file"; - } - - print < -
- -curl version: $version - SSL $sslenable $ssh -
URL: $show -$provided -
-MOO -; - print "

This package is type ".$typelonger{$t}."".$typedesc{$t}; - print $aboutver; - - if($pack ne "-") { - print "

The file is packaged using $pack."; - } - - if($pack eq "zip") { - print " Zip is a widely-used file archiving format. Wikipedia has more details on zip."; - } - elsif($pack eq "tar+xz") { - print " This file is tar'ed and then xzipped. Wikipedia has more details on xz."; - } - elsif($pack eq "tar+gz") { - print " This file is tar'ed and then gzipped. Wikipedia has more details on gzip."; - } - elsif($pack eq "tar+bz2") { - print " This file is tar'ed and then bzip2ed. Wikipedia has more details on bzip2."; - } - elsif($pack eq "tar+Z") { - print " This file is tar'ed and then compressed. Wikipedia has more details on compress."; - } - elsif($pack eq "lha") { - print " Lha is a common freeware compression utility on Amiga. Wikipedia has more details on lha."; - } - elsif($pack eq "pkg") { - print " pkg is a file format and tools collection made to handle software installation for your system."; - } - elsif($pack eq "RPM") { - print " RPM is a file format and tools collection made to handle software installation for a range of different Linux systems. Wikipedia has more details on RPM"; - } - elsif($pack eq "deb") { - print " deb is a file format with accompanying tools collection made to handle software installation for Debian Linux (and derivatives). Wikipedia has more details on deb"; - } - elsif($pack eq "7zip") { - print " 7zip is a file archiving format. Wikipedia has more details on 7zip."; - } - elsif($pack eq "ipk") { - print " ipkg is a file format and tools collection made to handle software installation for embedded Linux systems. Wikipedia has more details on Ipkg."; - } - - return $t; -} - - -sub sortent { - my $ret = $$a{'type'} cmp $$b{'type'}; - if(!$ret) { - $ret = vernum($$b{'curl'}) <=> vernum($$a{'curl'}); - } - if(!$ret) { - $ret = (0+$$b{'prio'}) <=> (0 + $$a{'prio'}); - } - return $ret; -} -if($pick_os && $pick_flav && $pick_ver && $pick_cpu) { - # print "

WANT: OS ($pick_os) FLAV ($pick_flav) VER ($pick_ver) CPU ($pick_cpu)"; - - showsteps(); - - subtitle("The Wizard Recommends..."); - - my $ver=$pick_ver; - if($ver eq "-" || $ver eq "*") { - $ver = ""; - } - my $os=$pick_os; - if($os eq "-") { - $os = "Platform Independent"; - } - my $img; - - my @match; - for $e (@all) { - if( ($$e{'os'} eq $pick_os) && - (($pick_type eq "*") || ($$e{'type'} eq $pick_type)) && - (($pick_flav eq "*") || ($$e{'flav'} eq $pick_flav)) && - (($pick_ver eq "*") || ($$e{'osver'} eq $pick_ver)) && - ($$e{'cpu'} eq $pick_cpu)) { - - push @match, $e; - - $img = dlpix($$e{'img'}, $$e{'os'}, $$e{'flav'}); - } - } - - if($img) { - printf("", $img); - } - if($fl eq "-") { - $fl = ""; - } - printf( "

For $fl $os $ver%s %s", - $pick_cpu ne "-"?" on $pick_cpu":"(CPU Independent)", - $pick_type ne "*"?" ".$typelonger{$pick_type}:""); - - my %got; - my $type; - if(scalar(@match) == 0) { - # no match! - - print "

Internal error. Found no matching entries."; - } - - elsif(scalar(@match) == 1) { - my $e=$match[0]; - - $type = single($e); - $got{$type}++; - } - else { - # more than one found! - my $i; - for $e (sort sortent @match) { - $type = single($e); - $got{$type}++; - } - } - - if($onlyone) { - my @w = split(" ", $onlyone); - my $v = $pick_ver; - my $f = $pick_flav; - my $o = $pick_os; - if($o eq "-") { - $o = "Platform Independent"; - } - if($f eq "-") { - $f = "generic"; - } - if($v eq "-") { - $v = "unspecified"; - } - for $e (@w) { - if($e eq "os") { - my $o = $pick_os; - print "

We know only one OS ($pick_os) for "; - selected("package ".$typelonger{$pick_type}); - } - elsif($e eq "flav") { - if($pick_os ne "-") { - print "

We know only one flavour ($f) of "; - selected($o); - print " for "; - selected("package ".$typelonger{$pick_type}); - } - } - elsif($e eq "ver") { - if($pick_os ne "-") { - print "

We know only one OS version ($v) for "; - selected("package ".$typelonger{$pick_type}." on $fl $pick_os"); - } - } - elsif($e eq "cpu") { - if($pick_os ne "-") { - my $c = $pick_cpu; - if($c eq "-") { - $c = "CPU Independent/unknown"; - } - print "

We know only one CPU ($c) for "; - selected("package ".$typelonger{$pick_type}." on $fl $pick_os version $v"); - } - } - } - } - - -} -&catfile("../foot.html");