Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/secure/simul_efun/object_info.c b/secure/simul_efun/object_info.c
new file mode 100644
index 0000000..ed7c009
--- /dev/null
+++ b/secure/simul_efun/object_info.c
@@ -0,0 +1,106 @@
+/* This sefun is to provide the old semantics of the efun object_info().
+ * Feel free to add it to your mudlibs, if you have much code relying on that.
+ */
+
+#if __EFUN_DEFINED__(driver_info) /* Newer version is there */
+
+#include <objectinfo.h>
+#include <object_info.h>
+
+mixed object_info(object ob, int what, varargs int* index)
+{
+ mixed * result;
+
+ if (sizeof(index) > 1)
+ raise_error("Too many arguments to object_info\n");
+
+ switch(what)
+ {
+ default:
+ raise_error(sprintf("Illegal value %d for object_info().\n", what));
+
+ case OINFO_BASIC:
+ {
+ result = allocate(OIB_MAX);
+
+ result[OIB_HEART_BEAT] = efun::object_info(ob, OC_HEART_BEAT);
+ result[OIB_IS_WIZARD] = 0; /* Not supported anymore. */
+ result[OIB_ENABLE_COMMANDS] = efun::object_info(ob, OC_COMMANDS_ENABLED);
+ result[OIB_CLONE] = efun::clonep(ob);
+ result[OIB_DESTRUCTED] = 0; /* Not possible anymore. */
+ result[OIB_SWAPPED] = efun::object_info(ob, OI_SWAPPED);
+ result[OIB_ONCE_INTERACTIVE] = efun::object_info(ob, OI_ONCE_INTERACTIVE);
+ result[OIB_RESET_STATE] = efun::object_info(ob, OI_RESET_STATE);
+ result[OIB_WILL_CLEAN_UP] = efun::object_info(ob, OI_WILL_CLEAN_UP);
+ result[OIB_LAMBDA_REFERENCED] = efun::object_info(ob, OI_LAMBDA_REFERENCED);
+ result[OIB_SHADOW] = efun::object_info(ob, OI_SHADOW_PREV) && 1;
+ result[OIB_REPLACED] = efun::object_info(ob, OI_REPLACED);
+ result[OIB_NEXT_RESET] = efun::object_info(ob, OI_NEXT_RESET_TIME);
+ result[OIB_TIME_OF_REF] = efun::object_info(ob, OI_LAST_REF_TIME);
+ result[OIB_REF] = efun::object_info(ob, OI_OBJECT_REFS);
+ result[OIB_GIGATICKS] = efun::object_info(ob, OI_GIGATICKS);
+ result[OIB_TICKS] = efun::object_info(ob, OI_TICKS);
+ result[OIB_SWAP_NUM] = efun::object_info(ob, OI_SWAP_NUM);
+ result[OIB_PROG_SWAPPED] = efun::object_info(ob, OI_PROG_SWAPPED);
+ result[OIB_VAR_SWAPPED] = efun::object_info(ob, OI_VAR_SWAPPED);
+ result[OIB_NAME] = efun::object_name(ob);
+ result[OIB_LOAD_NAME] = efun::load_name(ob);
+ result[OIB_NEXT_ALL] = efun::object_info(ob, OI_OBJECT_NEXT);
+ result[OIB_PREV_ALL] = efun::object_info(ob, OI_OBJECT_PREV);
+ result[OIB_NEXT_CLEANUP] = efun::object_info(ob, OI_NEXT_CLEANUP_TIME);
+ break;
+ }
+
+ case OINFO_POSITION:
+ {
+ result = allocate(OIP_MAX);
+
+ result[OIP_NEXT] = efun::object_info(ob, OI_OBJECT_NEXT);
+ result[OIP_PREV] = efun::object_info(ob, OI_OBJECT_PREV);
+ result[OIP_POS] = efun::object_info(ob, OI_OBJECT_POS);
+ break;
+ }
+
+ case OINFO_MEMORY:
+ {
+ result = allocate(OIM_MAX);
+
+ result[OIM_REF] = efun::object_info(ob, OI_PROG_REFS);
+ result[OIM_NAME] = efun::program_name(ob);
+ result[OIM_PROG_SIZE] = efun::object_info(ob, OI_PROG_SIZE);
+ result[OIM_NUM_FUNCTIONS] = efun::object_info(ob, OI_NUM_FUNCTIONS);
+ result[OIM_SIZE_FUNCTIONS] = efun::object_info(ob, OI_SIZE_FUNCTIONS);
+ result[OIM_NUM_VARIABLES] = efun::object_info(ob, OI_NUM_VARIABLES);
+ result[OIM_SIZE_VARIABLES] = efun::object_info(ob, OI_SIZE_VARIABLES);
+ result[OIM_NUM_STRINGS] = efun::object_info(ob, OI_NUM_STRINGS);
+ result[OIM_SIZE_STRINGS] = efun::object_info(ob, OI_SIZE_STRINGS);
+ result[OIM_SIZE_STRINGS_DATA] = efun::object_info(ob, OI_SIZE_STRINGS_DATA);
+ result[OIM_SIZE_STRINGS_TOTAL] = efun::object_info(ob, OI_SIZE_STRINGS_DATA_TOTAL);
+ result[OIM_NUM_INHERITED] = efun::object_info(ob, OI_NUM_INHERITED);
+ result[OIM_SIZE_INHERITED] = efun::object_info(ob, OI_SIZE_INHERITED);
+ result[OIM_TOTAL_SIZE] = efun::object_info(ob, OI_PROG_SIZE_TOTAL);
+ result[OIM_DATA_SIZE] = efun::object_info(ob, OI_DATA_SIZE);
+ result[OIM_TOTAL_DATA_SIZE] = efun::object_info(ob, OI_DATA_SIZE_TOTAL);
+ result[OIM_NO_INHERIT] = efun::object_info(ob, OI_NO_INHERIT);
+ result[OIM_NO_CLONE] = efun::object_info(ob, OI_NO_CLONE);
+ result[OIM_NO_SHADOW] = efun::object_info(ob, OI_NO_SHADOW);
+ result[OIM_NUM_INCLUDES] = efun::object_info(ob, OI_NUM_INCLUDED);
+ result[OIM_SHARE_VARIABLES] = efun::object_info(ob, OI_SHARE_VARIABLES);
+ break;
+ }
+ }
+
+ if (sizeof(index))
+ {
+ int idx = index[0];
+ if (idx < 0 || idx >= sizeof(result))
+ raise_error(sprintf("Illegal index for object_info(): %d, expected 0..%d\n",
+ idx, sizeof(result)-1));
+
+ return result[idx];
+ }
+ else
+ return result;
+}
+
+#endif