$x $y "; } function show_detail($v) { global $url_base; $num = $v["num"]; $file = $v["file"]; $status = $v["status"]; $path = "dl/$file"; $url = $url_base.$file; $dlink = "$file"; //$md = md5_file($path); $s = number_format(filesize($path)/1000000, 2); $date = $v["date"]; $type = type_text($v["type"]); $features = $v["features"]; $bugs = $v["bugs"]; list_start(); dl_item("File (click to download)", "$dlink ($s MB)"); dl_item("Version number", $num); dl_item("Release date", $date); dl_item("Installer type", $type); //dl_item("MD5 checksum of download file", $md); if ($features) { dl_item ("New features", $features); } if ($bugs) { dl_item ("Known problems", $bugs); } list_end(); } function show_version_xml($v, $p) { global $url_base; $name = $p["name"]; $dbname = $p["dbname"]; $num = $v["num"]; $file = $v["file"]; $status = $v["status"]; $path = "dl/$file"; $url = $url_base.$file; $dlink = "$file"; //$md = md5_file($path); $s = number_format(filesize($path)/1000000, 2); $date = $v["date"]; $type = type_text($v["type"]); $features = $v["features"]; $bugs = $v["bugs"]; $bugs = htmlspecialchars($bugs); $features = htmlspecialchars($features); echo " $name $dbname $status $date $num $url $file $s $type $features $bugs "; // $md } function is_dev($v) { return (strstr($v["status"], "Development") != null); } function show_version($pname, $i, $v) { global $url_base; $num = $v["num"]; $file = $v["file"]; $status = $v["status"]; if (is_dev($v)) { $status = $status." (MAY BE UNSTABLE - USE ONLY FOR TESTING) "; } $path = "dl/$file"; $s = number_format(filesize($path)/1000000, 2); $type = $v["type"]; $type_text = type_text($type); echo " $num $status Download ($s MB) Instructions: $type_text version details "; } function show_platform($short_name, $p, $dev) { global $min_version; global $max_version; $long_name = $p["name"]; if ($p["url"]) { $url = $p["url"]; $long_name .= " details"; } list_bar($long_name); foreach ($p["versions"] as $i=>$v) { if ($min_version && strcmp($v['num'], $min_version)<0) continue; if ($max_version && strcmp($v['num'], $max_version)>0) continue; if (!$dev && is_dev($v)) continue; show_version($short_name, $i, $v); } } function show_platform_xml($short_name, $p) { foreach ($p["versions"] as $i=>$v) { show_version_xml($v, $p); } } // show details on a version if URL indicates // if ($pname && $version) { $p = $platforms[$pname]; if (!$p) { error_page("platform not found"); } $long_name = $p["name"]; $va = $p["versions"]; foreach ($va as $v) { if ($v['num'] == $version && $type_name==$v['type']) { page_head("BOINC version $version for $long_name"); show_detail($v); page_tail(); exit(); } } error_page( "version not found\n"); } if ($xml) { header('Content-type: text/xml'); echo " "; foreach($platforms as $short_name=>$p) { show_platform_xml($short_name, $p); } echo "\n"; } else { if ($pname) { $p = $platforms[$pname]; $name = $p['name']; page_head("Download BOINC client software for $name"); echo ""; show_platform($pname, $p, $dev); list_end(); } else { page_head("Download BOINC client software"); echo " We are now using mirrored download servers at partner institutions. Your download will come from a randomly-chosen server. Thanks to these partners for their help.

If you have trouble downloading a file, please reload this page in your browser and try again. This will link to a different download mirror and may fix the problem.

"; foreach($platforms as $short_name=>$p) { show_platform($short_name, $p, $dev); } list_end(); echo "

If your computer is not of one of these types, you can

Note: BOINC is not available for Mac OS 9 or earlier. There are no plans to develop an OS 9 version. "; } echo "

Download information can be restricted by platform and/or version number, and can be obtained in XML format. Details. "; page_tail(); } ?>