Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/secure/simul_efun/spare/shadow.c b/secure/simul_efun/spare/shadow.c
new file mode 100644
index 0000000..7608c73
--- /dev/null
+++ b/secure/simul_efun/spare/shadow.c
@@ -0,0 +1,55 @@
+/* These sefuns are to provide a replacement for the efun query_shadowing()
+ * and the old semantics of the efun shadow().
+ * Feel free to add it to your mudlibs, if you have much code relying on that.
+ */
+
+#if ! __EFUN_DEFINED__(query_shadowing)
+
+#include <object_info.h>
+
+object query_shadowing(object ob)
+{
+    return efun::object_info(ob, OI_SHADOW_PREV);
+}
+
+private object _shadow(object ob, int flag)
+{
+    if(flag)
+    {
+        object shadower = efun::previous_object(1);
+        efun::set_this_object(shadower);
+
+        if (efun::shadow(ob))
+            return efun::object_info(shadower, OI_SHADOW_PREV);
+        else
+            return 0;
+    }
+    else
+        return efun::object_info(ob, OI_SHADOW_NEXT);
+}
+#else
+private object _shadow(object ob, int flag)
+{
+  set_this_object(previous_object(1));
+  return efun::shadow(ob, flag);
+}
+#endif
+
+
+public object shadow(object ob, int flag)
+{
+  object res = funcall(#'_shadow,ob, flag);
+  if (flag)
+    "/secure/shadowmaster"->RegisterShadow(previous_object());
+  return res;
+}
+
+private void _unshadow() {
+  set_this_object(previous_object(1));
+  efun::unshadow();
+}
+
+public void unshadow() {
+  funcall(#'_unshadow);
+  "/secure/shadowmaster"->UnregisterShadow(previous_object());
+}