don't use FALSE/TRUE: C99 has stdbool.h, use it.
[banana.git] / banana / nntpcore.inc.php
index 071ae5f..7867145 100644 (file)
@@ -29,6 +29,7 @@ class BananaNNTPCore
 
     /** debug mode */
     private $debug = false;
+    private $bt    = array();
 
     /** constructor
      * @param $host STRING NNTP host
@@ -81,6 +82,15 @@ class BananaNNTPCore
         return $this->lasterrortext;
     }
 
+    public function backtrace()
+    {
+        if ($this->debug) {
+            return $this->bt;
+        } else {
+            return null;
+        }
+    }
+
 # Socket functions
 
     /** get a line from server
@@ -112,6 +122,9 @@ class BananaNNTPCore
                 $array[] = $result;
             }
         }
+        if ($this->debug && $this->bt) {
+            $this->bt[count($this->bt) - 1]['response'] = count($array);
+        }
         return $array;
     }
 
@@ -126,7 +139,7 @@ class BananaNNTPCore
         }
         if ($this->debug) {
             $db_line = preg_replace('/PASS .*/', 'PASS *******', $line);
-            echo $db_line;
+            $this->bt[] = array('action' => $db_line, 'time' => microtime(true));
         }
         return fputs($this->ns, $line, strlen($line));
     }
@@ -139,6 +152,7 @@ class BananaNNTPCore
             $message = join("\n", $_message);
         }
         if ($message) {
+            $message = preg_replace("/(^|\n)\./", '\1..', $message);
             $this->putLine("$message\r\n", false);
         }
         return $this->execLine('.');
@@ -162,11 +176,15 @@ class BananaNNTPCore
     private function checkState($strict = true)
     {
         $result = $this->getLine();
-        if ($this->debug) {
-            echo "$result\n";
-        }
         $this->lastresultcode = substr($result, 0, 3);
         $this->lastresulttext = substr($result, 4);
+        if ($this->debug && $this->bt) {
+            $trace =& $this->bt[count($this->bt) - 1];
+            $trace['time']     = microtime(true) - $trace['time'];
+            $trace['code']     = $this->lastresultcode;
+            $trace['message']  = $this->lastresulttext;
+            $trace['response'] = 0;
+        }
         $c = $this->lastresultcode{0};
         if ($c == '2' || (($c == '1' || $c == '3') && !$strict)) {
             return true;
@@ -507,5 +525,5 @@ class BananaNNTPCore
     }
 }
 
-// vim:set et sw=4 sts=4 ts=4 
+// vim:set et sw=4 sts=4 ts=4 enc=utf-8: 
 ?>