2 $buildlogs_server = "buildlogs.pld.org.pl";
20 $qa_base = "http://ftp.pld.org.pl/.stat/builder";
23 "/kenny/rpmqa-nest-i386.txt",
24 "/kenny/rpmqa-nest-i586.txt",
25 "/kenny/rpmqa-nest-i686.txt",
27 "/ep/rpmqa-ra-i386.txt",
28 "/ep/rpmqa-ra-i586.txt",
29 "/ep/rpmqa-ra-i686.txt",
30 "/mifgate/rpmqa-ra-alpha.txt",
31 "/team/rpmqa-ra-sparc.txt",
34 $local = 1; /* $local=0 for FTP */
35 $root_directory = "/home/services/ftp/pub/logs";
36 $root_directory = "./";
38 /* It should be set */
40 $langs["en_US"]["charset"]="ISO-8859-1";
41 $langs["pl_PL"]["charset"]="ISO-8859-2";
44 if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]))
46 $rows=explode(";",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
47 $rows=explode(",",$rows[0]);
48 $lang_detected=rtrim($rows[0]);
49 } else if (preg_match("/opera/i",$_SERVER["HTTP_USER_AGENT"]))
51 $lang_detected=preg_replace("/.*\[(.*)\].*/i","\\1",$_SERVER["HTTP_USER_AGENT"]);
55 $lang_detected=preg_replace("/^pl$/i","pl_PL",$lang_detected);
57 if (isset($lang_detected) && isset($langs[$lang_detected]))
62 if (isset($_GET["lang"]))$_SESSION["lang"]=$_GET["lang"];
63 if (isset($_SESSION["lang"]))$lang=$_SESSION["lang"];
66 setlocale(LC_ALL,$lang);
67 bindtextdomain("messages","locale");
68 textdomain("messages");
70 if (isset($_GET["idx"]))$idx=$_GET["idx"];
71 if (isset($_GET["ok"]))$ok=$_GET["ok"];
72 if (isset($_GET["ns"]))$ns=$_GET["ns"];
73 if (isset($_GET["cnt"]))$cnt=$_GET["cnt"];
74 if (isset($_GET["action"]))$action=$_GET["action"];
75 if (isset($_GET["off"]))$cnt=$_GET["off"];
77 if (isset($_POST["str"]))$str=$_POST["str"];
78 if (isset($_POST["idx"]))$idx=$_POST["idx"];
79 if (isset($_POST["action"]))$action=$_POST["action"];
84 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
85 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
86 <html xmlns="http://www.w3.org/1999/xhtml">
88 <title>PLD Build Logs</title>
89 <style TYPE="text/css"><!--
90 A { text-decoration: none; }
91 A:hover { text-decoration: underline; }
92 H1 { font-family: arial,helvetica,sans-serif;
95 H2 { font-family: arial,helvetica,sans-serif;
98 BODY,TD { font-family: arial,helvetica,sans-serif;
100 TH { font-family: arial,helvetica,sans-serif;
106 <!-- Diffrent color for visited link doesn't make much sense here...
107 this page is autogenerated and it might be misleading after some
108 build log changes. -->
109 <body bgcolor="#ffffff" text="#000000" link="#5f26cd" vlink="#5f26cd">
115 echo "<table cellpadding=10><tr><td bgcolor=\"#000000\">".
116 "<font color=\"#cccccc\"><pre>";
121 echo "</pre></font></td></tr></table>\n";
126 echo "</body></html>";
132 echo "Fatal error: $msg";
135 function open_ftp($pidx="", $pok="")
137 global $idx, $addr, $buildlogs_server, $ok;
138 global $ftp_conn, $big_url, $url, $ns;
141 if ($pidx==="")$pidx=$idx;
142 if ($pok==="")$pok=$ok;
144 if (!isset($pidx) || !isset($addr[$pidx]))
153 $a = "$addr[$pidx]/OK";
155 $a = "$addr[$pidx]/FAIL";
163 $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt";
165 $ftp = ftp_connect($buildlogs_server);
168 mydie(_("cannot connect to")." $buildlogs_server");
172 if (ftp_login($ftp, "anonymous",
173 "buildlogs-iface@pld.org.pl") == false) {
175 mydie(_("cannot ftp login to")." $buildlogs_server");
179 $list = ftp_nlist($ftp, $a);
180 if ($list == false) {
182 mydie(_("cannot list")." $a");
191 function directory_list($pidx="",$pok="")
193 global $idx, $addr, $buildlogs_server, $ok;
194 global $root_directory, $big_url, $url, $ns;
197 if ($pidx==="")$pidx=$idx;
198 if ($pok==="")$pok=$ok;
199 if (!isset($pidx) || !isset($addr[$pidx]))
208 $a = "$addr[$pidx]/OK";
210 $a = "$addr[$pidx]/FAIL";
218 $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt";
220 $dir = opendir("$root_directory$a");
222 while ($file = readdir($dir)) {
223 if (($file != ".") && ($file != "..")) {
224 $list[$i] = "$a/$file";
234 global $idx, $addr, $ok;
235 global $ftp_conn, $big_url, $ns, $qa_addr;
236 global $off, $cnt, $local, $root_directory;
239 $list = directory_list();
247 echo "<h1>"._("Listing of")." $addr[$idx]/OK "
248 ."(<a href=\"$big_url&ok=0\">"._("fail")."</a>)</h1>";
250 echo "<h1>"._("Listing of")." $addr[$idx]/FAIL "
251 ."(<a href=\"$big_url&ok=1\">"._("ok")."</a>)</h1>";
254 echo "<div align=center><table border=0 cellspacing=1 ".
255 "cellpadding=3 bgcolor=#000000 width=90%>\n";
256 echo "<tr><th bgcolor=#CCCCFF align=left width=60%>"._("Log File").
257 "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>".
258 "<th bgcolor=#CCCCFF align=right width=15%>"._("Size")."</th> ".
259 "<th bgcolor=#CCCCFF align=left>"._("Age").
260 "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>".
263 function cmp($f1, $f2) {
264 global $ftp_conn, $root_directory, $local;
266 return filemtime("$root_directory$f2") - filemtime("$root_directory$f1");
267 return ftp_mdtm($ftp_conn, $f2) - ftp_mdtm($ftp_conn, $f1);
278 for ($i = $off; $i < $cnt + $off; $i++) {
279 if (!isset($list[$i]))
281 $h = bin2hex(mhash(MHASH_MD5, $list[$i]));
282 $f = preg_replace("/.*\/([^\/]*)$/", "\\1", $list[$i]);
283 $f = preg_replace("/\.(bz2|gz)$/", "", $f);
285 $s = filesize("$root_directory$list[$i]");
286 $t = $now - filemtime("$root_directory$list[$i]");
288 $s = ftp_size($ftp_conn, $list[$i]);
289 $t = $now - ftp_mdtm($ftp_conn, $list[$i]);
297 $t = $t . ngettext(" day"," days",$t);
300 $t = $t . ngettext(" hour"," hours",$t);
304 $t = $t . ngettext(" minute"," minutes",$t);
306 $u = "$big_url&off=$off&id=$h";
307 echo "<tr><td bgcolor=#CCCCCC><a ".
310 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
311 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
312 "</td><td bgcolor=#CCCCCC align=right>".
313 "$s</td><td bgcolor=#CCCCCC>$t</td></tr>\n";
315 echo "</table></div>\n";
317 $backarr = "<<< ";
318 $back = _("Page back");
319 $forward = _("Page forward");
320 $forwardarr = " >>>";
322 echo "<p><table width=90% align=center><tr><td align=left width=1%>";
328 $hrefurl = "<a href=\"$big_url&off=$noff\">";
329 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
331 echo "$backarr</td><td align=left>$back";
334 echo "</td>\n<td align=center>";
336 if ($qa_addr[$idx] != "") {
337 echo "[<a href=\"$big_url&action=qa\">"._("View <quot>rpm -qa</quot> of builder")."</a>]";
342 echo "</td>\n<td align=right>";
343 if ($off + $cnt < count($list)) {
347 $hrefurl = "<a href=\"$big_url&off=$noff\">";
348 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
350 echo "$forward</td><td align=right width=1%>$forwardarr";
352 echo "</td>\n</tr></table></p>";
361 global $idx, $addr, $ok;
362 global $ftp_conn, $root_directory, $big_url, $ns, $id;
363 global $buildlogs_server, $local;
368 $list = directory_list();
376 for ($i = 0; $i < count($list); $i++) {
377 $h = bin2hex(mhash(MHASH_MD5, $list[$i]));
384 mydie(_("cannot find specified file:")." $id");
393 function dump_log($tail)
395 global $idx, $addr, $ok, $url;
396 global $ftp_conn, $root_directory, $big_url, $ns, $id, $cnt, $off;
397 global $buildlogs_server, $local, $qa_addr;
404 $df = preg_replace("/.*\/([^\/]*)$/", "\\1", $f);
405 $df = preg_replace("/\.(bz2|gz)$/", "", $df);
409 echo "<table border=0 cellpadding=3 cellspacing=1 bgcolor=#000000>";
411 function one_item($h, $t) {
412 echo "<tr><td bgcolor=#ccccff>$h:</td>".
413 "<td bgcolor=#cccccc>$t</td></tr>";
416 function href($h, $c) {
417 return "<a href=\"$h\">$c</a>";
420 one_item(_("Status"), ($ok == 1 ?
421 "<font color=green><b>"._("OK")."</b></font>" :
422 "<font color=red><b>"._("Failed")."</b></a>"));
423 one_item(_("Source URL"),
424 href("ftp://$buildlogs_server$f",
425 "ftp://$buildlogs_server$f"));
427 $bu = "$big_url&off=$off";
429 one_item(_("text/plain URL"),
430 href("$bu&id=$id&action=text",
433 one_item(_("full text"),
438 if ($qa_addr[$idx] != "") {
439 one_item(_("rpm -qa of builder"), href("$bu&action=qa", _("View!")));
441 one_item(_("rpm -qa of builder"), _("Not available"));
444 one_item("Data", date("Y/m/d H:i:s", filemtime("$root_directory$f")));
446 one_item("Data", date("Y/m/d H:i:s", ftp_mdtm($ftp_conn, $f)));
449 echo "<tr><td>Here:</td><td>" .
450 "<a href=\"$url?idx=$idx&ok=$ok&id=$id\">".
451 "http://" . getenv("SERVER_NAME") .
452 getenv("SCRIPT_NAME") . "?idx=$idx&ok=$ok&id=$id</a>" .
455 echo "</table><h2>"._("Content:")."</h2>";
463 # what can I say beside PHP suxx? how the fuck should I create
464 # bidirectional pipe? gotta use wget
466 if (preg_match("/\.bz2$/", $f)) {
468 } elseif (preg_match("/\.gz$/", $f)) {
475 $cmd = "$filter $root_directory$f";
477 $cmd = "wget -q -O - ftp://$buildlogs_server$f 2>&1 | $filter 2>&1";
480 $cmd = "$cmd | tail -n 100";
481 $fd = popen($cmd, "r");
483 while (($s = fgets($fd, 1000)) != false) {
484 $s = htmlspecialchars($s);
494 [<a href="<?php echo $bu; ?>"><?=_("Back to list of logs")?></a>]
497 [<a href="<?php echo "$bu&action=qa"
498 ?>"><?=_("View rpm -qa of builder")?></a>]
508 global $ftp_conn, $root_directory;
509 global $buildlogs_server, $local;
511 header("Content-type: text/plain");
518 echo "# src : ftp://$buildlogs_server$f\n";
521 date("Y/m/d H:i:s", filemtime("$root_directory$f")) . "\n";
524 date("Y/m/d H:i:s", ftp_mdtm($ftp_conn, $f)) . "\n";
529 if (preg_match("/\.bz2$/", $f)) {
531 } elseif (preg_match("/\.gz$/", $f)) {
538 $cmd = "$filter $root_directory$f";
540 $cmd = "wget -q -O - ftp://$buildlogs_server$f 2>&1 | $filter 2>&1";
542 $fd = popen($cmd, "r");
543 while (($s = fgets($fd, 1000)) != false) {
549 function list_archs()
551 global $addr, $url, $idx;
553 $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt";
555 echo "<table width=100% border=0>\n";
556 echo "<tr><td bgcolor=#cccccc nowrap=1>"._("Failed")."</td><td bgcolor=#cccccc>"._("Ok")."</td></tr>\n";
557 for ($i = 0; $i < count($addr); $i++)
558 echo "<tr><td nowrap=1>".
559 "<a href=\"$url?idx=$i&ok=0\">$addr[$i]</a></td><td nowrap=1>".
560 "[<a href=\"$url?idx=$i&ok=1\">OK</a>]</td>".
561 #"<td>[<a href=\"$url?idx=$i&action=qa\">qa</a>]</td>".
563 echo "</table><hr />\n";
565 echo "<div align=\"center\">";
566 echo "<a href=\"$big_url&action=adv_search\">"._("Advanced Search")."</a><br/>\n";
568 echo "<a href=\"$url\">main()</a><hr />\n";
569 echo "<a href=\"http://www.pld.org.pl/\"><img src=powpld.png ".
570 "alt=\""._("Powered by PLD Linux")."\" border=0></a><br />\n" .
572 "<a href=\"mailto:feedback@pld.org.pl\">PLD Team</a>\n".
576 echo "<div align=center><small>";
577 $pow = array("vim", "php", "brain", "power", "electricity",
578 "coffee", "ufo", "penguin", "GNOME", "ELF", "DWARF",
579 "voodoo magic", "Linux", "x-files", "X", "foobar",
580 "/dev/null", "/dev/zero", "/dev/drzewo",
581 "Leppe'", "matrix", "Neo", "PDP-11",
582 "Ken", "GNU antilope", "PDP-7", "ITS", "Multics",
583 "foobarbaz", "ed", "Joe", "Unix conspiracy",
584 "overclock", "The Right Thing",
585 "The Bad Thing", "Star Treck", "NSA", "NASA",
586 "achelon", "VAX", "Real Programmer",
587 "Real Operating System", "Real Computer",
588 "computron", "bogon", "quantum bogodynamics",
589 "BOFH", "/dev/ill", "nasi tu byli",
590 "Paranoid Android", "Lunatic Corp"
591 # feel free to add sth if you change this file ;)
593 echo _("Powered by")." ";
595 for ($i = 0; $i < $max; $i++) {
596 $x = rand(0, count($pow) - 1);
597 if ($pow[$x] == "") $i--;
598 else echo $pow[$x] . ($i == $max - 1 ? "." : ", ");
601 echo "</small></div>";
605 if ($qa_addr[$idx] != "") {
606 echo "<form action=\"index.php\" method=\"post\">";
607 echo "<input type=hidden name=idx value=$idx />";
608 echo "<input type=hidden name=action value=sqa />";
609 echo "<input type=text size=14 name=str /><br/>";
610 echo "<input type=submit name=submit value=\""._("Search rpmqa!")."\" />";
617 global $idx, $qa_addr, $qa_base;
619 if (!isset($idx) || !isset($qa_addr[$idx]))
624 if ($qa_addr[$idx] == "")
627 return fopen("$qa_base$qa_addr[$idx]", "r");
632 global $url, $idx, $qa_addr, $str;
635 echo "<h1>"._("Search results for")." '$str' "._("in")." $qa_addr[$idx]</h1>";
640 echo _("Sorry, cannot open.");
642 while (($s = fgets($f, 1000)) != false) {
643 if (stristr($s, $str))
651 function dump_qa($plain)
653 global $url, $idx, $qa_addr;
660 header("Content-type: text/plain");
661 echo _("# rpm -qa of")." $a\n";
663 echo "<h1>"._("rpm -qa of")." $a</h1>";
664 echo "<a href=\"$url?idx=$idx&action=qatxt\">"._("text/plain version")."</a>";
669 echo _("Sorry, cannot open.");
671 while (($s = fgets($f, 1000)) != false) {
681 function adv_search()
683 global $addr, $url, $local, $_POST, $off, $cnt;
685 $big_url = "$url?idx=$idx&ok=$ok&ns=$ns&cnt=$cnt&action=adv_search";
687 echo "<form action=\"index.php?action=adv_search\" method=\"post\">";
689 echo "<div align=center>";
690 echo "<table border=0>\n";
692 echo "<td>"._("Package name")."</td>\n";
693 echo "<td><input type=\"text\" size=\"20\" name=\"name\" value=\"".$_POST[name]."\"/></td>\n";
697 echo "<td>"._("Days")."</td>\n";
698 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"age1\" value=\"".$_POST["age1"]."\" /></td>\n";
699 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"age2\" value=\"".$_POST["age2"]."\" /></td>\n";
703 echo "<td>"._("Size")."</td>\n";
704 echo "<td>"._("From").": <input type=\"text\" size=\"20\" name=\"size1\" value=\"".$_POST["size1"]."\" /></td>\n";
705 echo "<td>"._("To").": <input type=\"text\" size=\"20\" name=\"size2\" value=\"".$_POST["size2"]."\" /></td>\n";
709 echo "<td>"._("Search logs:")."</td>\n";
713 echo "<td>"._("OK")."</td>\n";
714 echo "<td>"._("Failed")."</td>\n";
717 for ($i = 0; $i < count($addr); $i++)
721 $check=" checked=\"on\"";
722 echo "<td><input name=$name type=\"checkbox\"$check>".$addr[$i]."</input></td>\n";
724 $check=" checked=\"on\"";
725 echo "<td><input name=$name type=\"checkbox\"$check>".$addr[$i]."</input></td>\n";
730 echo "<td><input type=submit name=submit value=\""._("Search!")."\" /></td>";
735 // if (isset($_POST["name"]) || isset($_POST["age1"]) || isset($_POST["age2"]) ||
736 // isset($_POST["size1"]) || isset($_POST["size2"]))
737 if (($_POST["name"]!="") || ($_POST["age1"]!="") || ($_POST["age2"]!="") ||
738 ($_POST["size1"]!="") || ($_POST["size2"]!=""))
742 for ($i = 0; $i < count($addr); $i++)
747 if (isset($_POST["as".$j."_".$i]))
750 $tmp_list = directory_list($i,$j);
752 $tmp_list = open_ftp($i,$j);
754 if (is_array($tmp_list))
756 while (list($k,$name)=each($tmp_list))
758 $s = filesize("$root_directory$name");
759 $t = $now - filemtime("$root_directory$name");
761 if (($_POST["name"]!="") && (!preg_match("/".$_POST["name"]."/i",$name)))continue;
762 if (($_POST["age1"]) && ($_POST["age1"]>$t))continue;
763 if (($_POST["age2"]) && ($_POST["age2"]<$t))continue;
765 if (($_POST["size1"]) && ($_POST["size1"]>$s))continue;
766 if (($_POST["size2"]) && ($_POST["size2"]<$s))continue;
768 $list[$i."_".$j."_".$k]=$name;
774 if (sizeof($list)==0)
776 echo _("Nothing found");
780 echo "<table border=0 cellspacing=1 ".
781 "cellpadding=3 bgcolor=#000000 width=90%>\n";
782 echo "<tr><th bgcolor=#CCCCFF align=left width=10%>"._("Builder").
783 "[<a href=\"$big_url&ns=2\">"._("sort")."</a>]</th>";
784 echo "<th bgcolor=#CCCCFF align=left width=60%>"._("Log File").
785 "[<a href=\"$big_url&ns=1\">"._("sort")."</a>]</th>".
786 "<th bgcolor=#CCCCFF align=right width=15%>"._("Size")."</th> ".
787 "<th bgcolor=#CCCCFF align=left>"._("Age").
788 "[<a href=\"$big_url&ns=0\">"._("sort")."</a>]</th>".
791 function cmp1($f1, $f2) {
792 global $ftp_conn, $root_directory, $local;
794 return filemtime("$root_directory$f2") - filemtime("$root_directory$f1");
795 return ftp_mdtm($ftp_conn, $f2) - ftp_mdtm($ftp_conn, $f1);
798 function cmp2($f1, $f2) {
799 list($p11,$p12,$p13)=explode("_",$f1);
800 list($p21,$p22,$p23)=explode("_",$f2);
801 return strcmp($f2,$f1);
806 usort($list, "cmp1");
807 // } else if ($ns == 2)
809 // uksort($list, "cmp2");
816 while (list($k,$name)=each($list))
818 if (($counter<$off) || ($counter>$off+$cnt-1))
825 list($i,$j,$k)=explode("_",$k);
827 $h = bin2hex(mhash(MHASH_MD5, $name));
828 $f = preg_replace("/.*\/([^\/]*)$/", "\\1", $name);
829 $f = preg_replace("/\.(bz2|gz)$/", "", $f);
831 $s = filesize("$root_directory$name");
832 $t = $now - filemtime("$root_directory$name");
834 $s = ftp_size($ftp_conn, $list[$i]);
835 $t = $now - ftp_mdtm($ftp_conn, $list[$i]);
843 $t = $t . ngettext(" day"," days",$t);
846 $t = $t . ngettext(" hour"," hours",$t);
850 $t = $t . ngettext(" minute"," minutes",$t);
852 $u = "$big_url&off=$off&id=$h";
853 $builder=$addr[$i]."/".(($j===0)?"OK":"FAIL");
855 echo "<td bgcolor=#CCCCCC><a href=\"$u\">$builder</a></td>";
856 echo "<td bgcolor=#CCCCCC><a href=\"$u\">$f</a> ".
857 "[<a href=\"$u&action=text\">"._("text")."</a> | ".
858 "<a href=\"$u&action=tail\">"._("tail")."</a>]".
859 "</td><td bgcolor=#CCCCCC align=right>".
860 "$s</td><td bgcolor=#CCCCCC>$t</td></tr>\n";
862 echo "</table></div>\n";
864 $backarr = "<<< ";
865 $back = _("Page back");
866 $forward = _("Page forward");
867 $forwardarr = " >>>";
871 echo "<p><table width=90% align=center><tr><td align=left width=1%>";
877 $hrefurl = "<a href=\"$big_url&off=$noff\">";
878 echo "$hrefurl$backarr</a></td><td align=left>$hrefurl$back</a>";
880 echo "$backarr</td><td align=left>$back";
883 echo "</td>\n<td align=center>";
884 echo "</td>\n<td align=right>";
886 if ($off + $cnt < count($list))
891 $hrefurl = "<a href=\"$big_url&off=$noff\">";
892 echo "$hrefurl$forward</a></td><td align=right width=1%>$hrefurl$forwardarr</a>";
896 echo "$forward</td><td align=right width=1%>$forwardarr";
899 echo "</td>\n</tr></table></p>";
908 echo _("Enter something!");
916 <table border=0 width=100%><tr><td width=20%> </td><td>
917 <h1><?=_("Welcome!")?></h1>
918 <p><?=_("Welcome to PLD Build Logs WWW interface.")?></p><p>
919 <?=_("Feel free to email bug reports, complaints and feature requests ")?>
920 <!-- ech... niech strace... -->
921 <a href="mailto:feedback@pld.org.pl"><?=_("to us")?></a>. <?=_("Positive opinions are also")?>
922 <a href="mailto:feedback@pld.org.pl"><?=_("welcome")?></a> ;)</p>
923 <p>Version: $Id: index.php,v 1.24 2002/10/07 11:04:22 ggodlewski Exp $</p>
924 </td><td width=20%> </td></tr>
929 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
930 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
931 header("Cache-Control: no-cache, must-revalidate");
932 header("Pragma: no-cache");
936 if ($action == "text") {
938 } else if ($action == "adv_search") {
942 } else if ($action == "qatxt") {
946 echo "<table cellpadding=10 width=100%><tr><td valign=top width=10%>";
948 echo "</td><td valign=top>";
952 else if ($action == "sqa")
955 dump_log($action == "tail");
956 else if (isset($idx))
960 echo "</td></tr></table>";
966 if ($action == "text") {
968 } else if ($action == "qatxt") {
972 echo "<table cellpadding=10 width=100%><tr><td valign=top width=10%>";
974 echo "</td><td valign=top>";
979 dump_log($action == "tail");
980 else if (isset($idx))
984 echo "</td></tr></table>";