Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/std/more.c b/std/more.c
new file mode 100644
index 0000000..8518981
--- /dev/null
+++ b/std/more.c
@@ -0,0 +1,143 @@
+// MorgenGrauen MUDlib
+//
+// more.c -- more files
+//
+// $Id: more.c 9142 2015-02-04 22:17:29Z Zesstra $
+
+#pragma strict_types
+#pragma save_types
+#pragma no_clone
+#pragma pedantic
+#pragma range_check
+
+inherit "/std/util/pager";
+
+#include <pager.h>
+
+#ifdef GERMAN
+# define MSG_WRAPPED	" VOM ANFANG"
+# define MSG_NOT_FOUND	" NICHTS GEFUNDEN"
+# define MSG_NO_REGX	" FEHLENDER REG. AUSDRUCK"
+# define MSG_ILLEGAL	" ILLEGALE ZEILENZAHL"
+# define MSG_HELP       "\
+Hilfe fuer more:\n\
+\n\
+b,B        -- Eine Seite zurueck.\n\
+u,U        -- Eine halbe Seite zurueck.\n\
+f,F        -- Eine Seite vorwaerts.\n\
+d,D        -- Eine halbe Seite vorwaerts.\n\
+<Zeile>    -- Springe zu Zeile <Zeile>\n\
+q,x        -- Verlassen von more.\n\
+/<RegExp>  -- Nach dem regulaeren Ausdruck <RegExp> suchen.\n"
+#else
+# define MSG_WRAPPED	" WRAPPED"
+# define MSG_NOT_FOUND	" NOTHING FOUND"
+# define MSG_NO_REGX	" NO PREV REGULAR EXPR"
+# define MSG_ILLEGAL	" ILLEGAL LINE NUMBER"
+# define MSG_HELP       "\
+Help for more:\n\
+\n\
+b,B        -- One page back.\n\
+u,U        -- Half a page back.\n\
+f,F        -- One page forward.\n\
+d,D        -- Half a page forward.\n\
+<line>     -- Jump to line number <line>\n\
+q,x        -- Quit or eXit more.\n\
+/<regexp>  -- Search for the regular expression <regexp>.\n"
+#endif
+
+private nosave string cprompt = "";
+
+string prompt(mixed pinfo, string add)
+{
+  int line,max; max = 1;
+  if(pointerp(pinfo))
+  {
+     if(pinfo[CURL] + pinfo[PAGE] >= pinfo[MAXL]) line = pinfo[MAXL];
+     else line = pinfo[CURL] + pinfo[PAGE];
+     max = pinfo[MAXL];
+  }
+  if (pinfo[FLAG] & E_ABS)
+    return sprintf("%s (%d/%d)%s %s",
+		   ::prompt(pinfo, ""),
+		   line-1, pinfo[MAXL],
+		   cprompt, stringp(add)?add:"");
+  else
+    return sprintf("%s(%d%%)%s %s",
+		   ::prompt(pinfo, ""),
+		   line*100/max, 
+		   cprompt, stringp(add)?add:"");
+}
+
+int search(mixed pinfo)
+{
+  int l, lines;
+  mixed tmp;
+  l = pinfo[CURL];
+  while((tmp = fread(pinfo, l, pinfo[PAGE])) &&
+        !sizeof(regexp(old_explode(tmp, "\n"), pinfo[REGX])))
+    l += pinfo[PAGE];
+  if(!tmp)
+  {
+    cprompt += MSG_WRAPPED;
+    l = 1;
+    while(l < pinfo[CURL] &&
+          (tmp = fread(pinfo, l, pinfo[PAGE])) &&
+          !sizeof(regexp(old_explode(tmp, "\n"), pinfo[REGX])))
+      l += pinfo[PAGE];
+    if(l >= pinfo[CURL]) return 0;
+  }
+  return l;
+}
+
+varargs int eval_command(mixed in, mixed pinfo)
+{
+  cprompt = "";
+  if(stringp(in))
+    switch(in)
+    {
+    case "?":
+      write(MSG_HELP+"\n");
+      return 0; 
+    case "b":
+    case "B":
+      pinfo[CURL] -= pinfo[PAGE];
+      break;
+    case "u":
+    case "U":
+      pinfo[CURL] -= pinfo[PAGE] / 2;
+      break;
+    case "f":
+    case "F":
+      pinfo[CURL] += pinfo[PAGE];
+      break;
+    case "d":
+    case "D":
+      pinfo[CURL] += pinfo[PAGE] / 2;
+      break;
+    default:
+    {
+      int l;
+      if(l = to_int(in))
+      {
+        if(l > pinfo[MAXL] || l < 1) return (cprompt = MSG_ILLEGAL, 0);
+        pinfo[CURL] = l;
+        break;
+      }
+      if(sizeof(in) && in[0] == '/')
+      {
+	if(sizeof(in) == 1)
+	{
+	  if(!pinfo[REGX]) return (cprompt = MSG_NO_REGX, 0);
+	}
+	else pinfo[REGX] = in[1..];
+	if(l = search(pinfo)) pinfo[CURL] = l;
+	else return (cprompt = MSG_NOT_FOUND, 0);
+      }
+      else return ::eval_command(in, pinfo);    
+      break;
+    }
+    }
+  else return ::eval_command(in, pinfo);
+  return ::eval_command(-1, pinfo);
+}