", array()), array("/browse" ,"Browse" , array( array("/server/" , "Server" ), array("/metac/" , "Translator" ), array("/scripts/" , "Scripts" ), array("/bench/" , "Benchmarking" ), array("/paper/" , "Paper" ))), array("/power17" ,"Power" , array( array("/power17" , "17" ), array("/power127" , "127" ), array("/power255" , "255" ), array("/power511" , "511" ), array("/power1023" , "1023" ), array("/power2047" , "2047" ), array("/power4095" , "4095" ), array("/power8191" , "8191" ))), array("/uname" ,"Stats" , array( array("/uname" , "Architecture" ), array("/uptime" , "Uptime" ), array("/gc" , "Garbage collector" ), array("/http" , "HTTP headers" ))), array("/about" ,"About" , array())); preamble("browsing $d"); navbar(); if (isset($_GET['re'])) { if($_GET['re']) { $re = $_GET['re']; } else { $re = "."; } } else { $re = "^[^\\.].*[^~]$"; } $ord = $_GET['ord']; $entry_fmt = "%-32s %-13s %5s %s%s\n"; #### List files $list = array(); $dh = opendir($d); while(($file = readdir($dh)) !== false) { if(ereg($re, $file)) { $fd = array(); $path = "$d/$file"; $fd['name'] = $file; $fd['ext'] = strrchr($file, "."); $fd['kind'] = ""; $ind = ""; switch(filetype($path)) { case "dir": $fd['kind'] = "dir"; $ind = "/"; break; case "link": $fd['kind'] = "symlink"; $ind = "@"; break; case "fifo": $fd['kind'] = "fifo"; $ind = "|"; break; case "block": $fd['kind'] = "bdev"; $ind = ""; break; default: switch($fd['ext']) { case ".a" : $fd['kind'] = "lib"; break; case ".cma": $fd['kind'] = "lib"; break; case ".cmi": $fd['kind'] = "obj"; break; case ".cmo": $fd['kind'] = "obj"; break; case ".ml" : $fd['kind'] = "src"; break; case ".mli": $fd['kind'] = "hdr"; break; } } $fd['mtime'] = filemtime($path); $fd['size'] = filesize($path); $fd['md5'] = $ind=="/"? "" : md5(file_get_contents($path)); $fd['prn'] = sprintf($entry_fmt, $fd['md5'], strftime("%e %b %H:%M", $fd['mtime']), human_size($fd['size']), $path, $fd['kind'], $fd['name'], $ind); array_push($list, $fd); } } closedir($dh); #### Sort files function cmp_ext($a,$b) { return strcmp($a['ext'],$b['ext']); } function cmp_kind($a,$b) { return strcmp($a['kind'],$b['kind']); } function cmp_name($a,$b) { return strcmp($a['name'],$b['name']); } function numcmp($a,$b) { return ($a == $b)? 0 : (($a < $b)? -1 : 1); } function cmp_mtime($a,$b) { return numcmp($a['mtime'],$b['mtime']); } function cmp_size($a,$b) { return numcmp($a['size'],$b['size']); } switch($ord) { case "ext": usort($list, "cmp_ext"); break; case "kind": usort($list, "cmp_kind"); break; case "time": usort($list, "cmp_mtime"); break; case "size": usort($list, "cmp_size"); break; default: usort($list, "cmp_name"); } ?>
files matching ordered by
checksum                          last modified  size   name

MetaOCaml Server Pages: $title "; } function postamble() { print " "; } function navbar() { global $navspec; print "
\n"; } function ord_options($a) { global $ord; foreach($a as $i) { if ($ord == $i[0]) { print "\n"; } else { print "\n"; } } } function human_size($n) { if($n < 1024) { return sprintf("%4d ", $n); } else if($n < 102400) { return sprintf("%2.1fk", $n/1024); } else if($n < 1024000) { return sprintf("%4dk", $n/1024); } else if($n < 104857600) { return sprintf("%2.1fM", $n/1048576); } else { return sprintf("%4dM", $n/1048576); } } ?>