summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEudyptula <eitan@mosenkis.net>2009-06-22 19:28:58 -0400
committerEudyptula <eitan@mosenkis.net>2009-06-22 19:28:58 -0400
commitbe18c4d92f8409deafe2ebde26d5d57ce044586d (patch)
treefe87385e541af01c309923965a80afde7a7c4e53
parentStarted working on converting terminal escape sequences to HTML equivalents (diff)
downloadingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.tar.gz
ingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.tar.bz2
ingenue-be18c4d92f8409deafe2ebde26d5d57ce044586d.zip
Integrated basic ANSI handling into logviewer, needs to be merged with logviewer metadata still
-rwxr-xr-xcolor.php43
-rw-r--r--frontend/pages/logview.php42
-rw-r--r--shared/config.php2
3 files changed, 41 insertions, 46 deletions
diff --git a/color.php b/color.php
deleted file mode 100755
index 0e12806..0000000
--- a/color.php
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/php
-<?php
-function fg($color) {
- return "<span style=\"color: $color\">";
-}
-function call_me($match) {
- $a=explode(' ', 'bright dim underscore blink reverse hidden');
- $c=explode(' ', 'black red green yellow blue magenta cyan white');
- static $spans=0;
- $r='';
- if (count($match) == 1) {
- $r.=str_repeat('</span>', $spans);
- $spans=0;
- } else {
- for ($i=1; $i<count($match); $i++) {
- $n=(int)$match[$i];
- if ($n == 0) {
- $r.=str_repeat('</span>', $spans);
- $spans=0;
- } elseif ($n <= 8) {
- if ($a[$n-1]) {
- $r.='<span style="'.$a[$n-1].'">';
- $spans++;
- }
- } elseif (30 <= $n && $n <= 37) {
- $r.='<span style="color: '.$c[$n-30].'">';
- $spans++;
- } elseif (40 <= $n && $n <= 47) {
- $r.='<span style="background-color: '.$c[$n-40].'">';
- $spans++;
- }
- }
- }
- return $r;
-}
-echo '<pre>';
-while (!feof(STDIN)) {
- $line=str_replace("\x1b[K", '', fgets(STDIN));
- do {
- $line=preg_replace('#.\ch#', '', $line, -1, $count); // ^H = Backspace
- } while ($count);
- echo preg_replace_callback('#\e\[(?:(?:([0-9]{1,2});)*([0-9]{1,2}))?m#', 'call_me', $line);
-}
diff --git a/frontend/pages/logview.php b/frontend/pages/logview.php
index 176556a..90a1fc9 100644
--- a/frontend/pages/logview.php
+++ b/frontend/pages/logview.php
@@ -48,8 +48,9 @@ function body_logview() {
echo '<div style="font-family: monospace">';
while ($entry=$r->fetch(PDO::FETCH_ASSOC)) {
$entry=new sql_buildlog_entry($entry);
- $text=str_replace(array("\n", "\t"), array("<br/>\n", str_repeat('&nbsp;', 4)), htmlentities($entry->text));
- echo '<a name="entry_'.$task->id.'_'.$entry->order.'"'.($entry->stream=='stderr'?' style="color: red" ':'').' title="'.strtoupper($entry->stream).', entry #'.$entry->order.' @ '.date('D j M Y @ H:i:s', $entry->timestamp).' UTC">'.$text.'</a>';
+// $text=str_replace(array("\n", "\t"), array("<br/>\n", str_repeat('&nbsp;', 4)), htmlentities($entry->text));
+// echo '<a name="entry_'.$task->id.'_'.$entry->order.'"'.($entry->stream=='stderr'?' style="color: red" ':'').' title="'.strtoupper($entry->stream).', entry #'.$entry->order.' @ '.date('D j M Y @ H:i:s', $entry->timestamp).' UTC">'.$text.'</a>';
+ echo process_ansi($entry->text);
}
echo '</div>';
echo $pager;
@@ -86,4 +87,41 @@ function body_logview() {
}
}
}
+function ansi_callback($match) {
+ $a=explode(' ', 'bright dim underscore blink reverse hidden');
+ $c=explode(' ', 'black red green yellow blue magenta cyan white');
+ static $spans=0;
+ $r='';
+ if (count($match) == 1) {
+ $r.=str_repeat('</span>', $spans);
+ $spans=0;
+ } else {
+ for ($i=1; $i<count($match); $i++) {
+ $n=(int)$match[$i];
+ if ($n == 0) {
+ $r.=str_repeat('</span>', $spans);
+ $spans=0;
+ } elseif ($n <= 8) {
+ if ($a[$n-1]) {
+ $r.='<span style="'.$a[$n-1].'">';
+ $spans++;
+ }
+ } elseif (30 <= $n && $n <= 37) {
+ $r.='<span style="color: '.$c[$n-30].'">';
+ $spans++;
+ } elseif (40 <= $n && $n <= 47) {
+ $r.='<span style="background-color: '.$c[$n-40].'">';
+ $spans++;
+ }
+ }
+ }
+ return $r;
+}
+function process_ansi($txt) {
+ $txt=str_replace("\x1b[K", '', nl2br($txt));
+ do {
+ $txt=preg_replace('#.\ch#', '', $txt, -1, $count); // ^H = Backspace
+ } while ($count);
+ return preg_replace_callback('#\e\[(?:(?:([0-9]{1,2});)*([0-9]{1,2}))?m#', 'ansi_callback', $txt);
+}
?>
diff --git a/shared/config.php b/shared/config.php
index 3e7affd..a8719ed 100644
--- a/shared/config.php
+++ b/shared/config.php
@@ -12,7 +12,7 @@ $conf['timezone']=10800; // Time difference in seconds between UTC and the defau
$conf['mod_rewrite']=true; // Use mod_rewrite for pretty URLs
$conf['check_email_dns']=true; // Use DNS to check the domain of submitted emails for validity
$conf['pkgdir_root']='/home/eitan/soc/tinderbox'; // The directory to recursively search for pkgdirs in
-$conf['emerge_default_opts']='-t -v -K --color=n --root-deps=rdeps'; // DON'T CHANGE UNLESS YOU KNOW WHAT YOU'RE DOING
+$conf['emerge_default_opts']='-t -v -K --color=y --root-deps=rdeps'; // DON'T CHANGE UNLESS YOU KNOW WHAT YOU'RE DOING
$conf['portdir']='/usr/portage'; // The directory conatining the portage tree to use (/usr/portage unless you have a reason to think otherwise)
$conf['logview_max']=1000;
?>