Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/secure/simul_efun/query_mud_port.c b/secure/simul_efun/query_mud_port.c
new file mode 100644
index 0000000..bff009d
--- /dev/null
+++ b/secure/simul_efun/query_mud_port.c
@@ -0,0 +1,35 @@
+/* This sefun is to provide a replacement for the efun query_mud_port().
+ * Feel free to add it to your mudlibs, if you have much code relying on that.
+ */
+
+#if ! __EFUN_DEFINED__(query_mud_port)
+
+#include <interactive_info.h>
+#include <driver_info.h>
+
+int query_mud_port(varargs int*|object* args)
+{
+    if(!sizeof(args) && efun::this_player() && efun::interactive(this_player()))
+        return efun::interactive_info(this_player(), II_MUD_PORT);
+
+    if(sizeof(args) > 1)
+        raise_error("Too many arguments to query_mud_port\n");
+
+    if(sizeof(args) && efun::objectp(args[0]) && efun::interactive(args[0]))
+        return efun::interactive_info(args[0], II_MUD_PORT);
+
+    if(sizeof(args) && intp(args[0]))
+    {
+        int* ports = efun::driver_info(DI_MUD_PORTS);
+        if(args[0] < -1 || args[0] >= sizeof(ports))
+            raise_error(efun::sprintf("Bad arg 1 to query_mud_port(): value %d out of range.\n", args[0]));
+        else if(args[0] == -1)
+            return sizeof(ports);
+        else
+            return ports[args[0]];
+    }
+
+    return efun::driver_info(DI_MUD_PORTS)[0];
+}
+
+#endif