Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/p/daemon/debug.c b/p/daemon/debug.c
new file mode 100644
index 0000000..0ad6975
--- /dev/null
+++ b/p/daemon/debug.c
@@ -0,0 +1,128 @@
+
+#pragma strict_types,save_types
+#pragma no_clone,no_shadow
+
+#include <daemon.h>
+#include <logging.h>
+
+static int d_start, d_end, e_start, e_end;
+
+protected void create()
+{    
+    d_end = d_start = e_end = e_start = file_size(__DEBUG_LOG__);
+}
+
+int check( string ch, object pl, string cmd, string txt )
+{
+    mixed tmp;
+    
+    if ( ch != "Debug" && ch != "Entwicklung" && ch != "Warnungen" )
+        return 0;
+    
+    if( objectp(pl) && query_once_interactive(pl) && query_wiz_level(pl) > 15 )
+        switch(cmd){
+        case C_FIND:
+        case C_LIST:
+        case C_JOIN:
+        case C_LEAVE:
+            return 1;
+        case C_SEND:
+            // Wer (noch) nicht auf dem Kanal ist, bekommt auch keine
+            // Ausgabe - sonst gibt es selbige doppelt, da der CHMASTER
+            // einen automatisch den Kanal betreten laesst ...
+            if ( !objectp(pl) || !pointerp(tmp=(mixed)pl->QueryProp(P_CHANNELS)) ||
+                 member( tmp, lower_case(ch) ) == -1 )
+                return 1;
+
+            switch( lower_case(txt) ){
+            case "backtrace":
+                {
+                    string bt, log;
+                    int start, end;
+                    
+                    if ( ch == "Debug" ) {
+                        start = d_start;
+                        end = d_end;
+                    }
+                    else if (ch == "Entwicklung") {
+                        start = e_start;
+                        end = e_end;
+                    }
+		    else if (ch == "Warnungen") {
+			pl->Message( "[" + ch + ":] Backtrace fuer Warnungen "
+			    "nicht verfuegbar!\n");
+			return 0;
+		    }
+		    else return(1);
+                    
+                    if( start >= end ) 
+                        bt = "[" + ch + ":] Kein Backtrace verfuegbar!\n";
+                    else {
+                        log = regreplace( read_bytes( __DEBUG_LOG__, start,
+                                                      (end-start>10000)?10000:
+						      end - start ) || "\nFehler beim Einlesen des Debuglogs: Kein Backtrace verfuegbar!\n",
+                                          "(Misplaced|current_object|"
+                                          "Connection|Host)[^\n]*\n",
+                                          "", 1 );
+                        bt = "[" + ch + ":] -- BACKTRACE BEGIN --\n"
+                            + log
+                            + "[" + ch + ":] -- BACKTRACE END --\n";
+                    }
+                    
+                    call_out( symbol_function( "Message", pl ), 0, bt );
+                }
+                break;
+
+            default:
+		if ( ch != "Warnungen" ) {
+		  pl->Message( "[" + ch + ":] Hilfe...\n"
+                             "[" + ch + ":] Folgende Kommandos stehen zur "
+                             "Verfuegung:\n"
+                             "[" + ch + ":] 'backtrace' -- sendet den "
+                             "Backtrace zum Fehler\n"
+                             "[" + ch + ":] 'hilfe'     -- sendet diese "
+                             "Hilfeseite\n");
+		}
+		else {
+		  pl->Message( "[" + ch + ":] Keine Kommandos verfuegbar!\n");
+		}
+            }
+	}
+    
+    return 0;
+}
+
+string name() { return "<Debugger>"; }
+string Name() { return "<Debugger>"; }
+
+void ChannelMessage( mixed a )
+{
+    int fs;
+
+    fs = file_size(__DEBUG_LOG__);
+    
+    switch( a[0] ){
+    case "Debug":
+        if (  fs > d_end && fs > e_end ){
+	    d_start = max((d_end > e_end ? d_end : e_end),0);
+            d_end = fs;
+        }
+        else if (fs < d_start || fs <= d_end) {
+	    // Debuglog wurde wohl neu geoeffnet.
+	    d_start = d_end = e_start = e_end = fs;
+	}
+        break;
+        
+    case "Entwicklung":
+        if (  fs > d_end && fs > e_end ){
+	    e_start = max((e_end > d_end ? e_end : d_end),0);
+            e_end = fs;
+        }
+        else if (fs < e_start || fs <= e_end) {
+	    // Debuglog wurde wohl neu geoeffnet.
+	    d_start = d_end = e_start = e_end = fs;
+	}
+        break;
+    }
+}
+