ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
Short: MudOS compatibility
Date: Mon, 21 Dec 1998 20:08:04 +0200 (EET)
Type: Feature
State: Unclassified

Maybe introduce a special MudOS compat mode in the long run?
In general, check which MudOS efuns might be useful for us.

Following is '/include/sys/efuns.h' from Tatu's MurderMud, which achieves
compatibility between MudOS and Amylaar (somewhat):

--- clip clip ---

#ifndef _SYS_EFUNS_H
#define	_SYS_EFUNS_H

#ifdef MUDOS

#define	STRSTR2(x, y)		strsrch(x, y)
#define	STRSTR3(x, y, z)	strsrch(x, y, z)
#define	M_KEYS(x)		keys(x)
#define	M_VALUES(x)		values(x)
#define	PRINT_ERROR(x)		error(x)
#define	MEMBER(x, y)		((mapp(x)) ? (!undefinedp(((mapping)x)[y])) :\
				member_array(y, x))
#define	USERP(x)		userp(x)
#define	GET_EVAL_COST()		eval_cost()
#define	MAPPINGP(x)		mapp(x)
#define	FUNCTION_TYPE		function
#define	FUNCTION(func)		(: func :)
#define	FUNCTION2(func, ob)	(: ob, "func" :)
#define	GET_FUNCTION(func)	(: this_object(), func :)
#define	GET_FUNCTION2(func, ob)	(: ob, func :)
#define	FUNCTIONP(x)		functionp(x)
#define	FUNCTION_VALID(x)	!(functionp(x) & FP_OWNER_DESTED)
#define	FUNCALL			evaluate
#define	SORT_ARRAY_ASC(x)	sort_array(x, 1)
#define	SORT_ARRAY_DESC(x)	sort_array(x, -1)
#define	WALK_MAPPING(map, func)	map_mapping(map, (: this_object(), func :))
#define	M_DELETE(map,key)	map_delete(map,key)
#define	POINTER(var)		ref var
#define	E_POINTER(var)		ref var
#define	PBR_ARG(arg)		ref arg
#define	IN_MAPPING(map, key)	!undefinedp(map[key])
#define	IN_ARRAY(arr, key)	(member_array(key, arr) >= 0)
#define	IN_STRING(str, char)	(strsrch(str, char) >= 0)
#define	TO_OBJECT(func)		function_owner(func)
#define	REST_ARGS(x)		array x
#define	EXTERN_CALL()		(origin() != "local")
#define	TRIM_LEADING_WS(x)	sscanf(x, "%*([ \t]+)%s", x)
#define	COUNTED_WHITESPACE		"%*([\t ]+)"
#define	COUNTED_OPTIONAL_WHITESPACE	"%*([\t ]*)"

// Not sure if this can be done?
#define	set_this_player(x)	(x)

/* Is there no better way? */
#define	COPY_MAPPING(x)		(x + ([ ]))

// These aren't implemented; they were "own" efuns added to Amylaar:
#define	SHARE_STRING(x)	(x)
// Hash simply returns the internal hash value as calculated for
// shared strings:
#define	HASH(x)	(random(10))
// And query_micros() just returns a microsecond counter:
#define QUERY_MICROS() (1)

#else

#define	STRSTR2(x, y)		strstr(x, y)
#define	STRSTR3(x, y, z)	strstr(x, y, z)
#define	M_KEYS(x)		m_indices(x)
#define	M_VALUES(x)		m_values(x)
#define	PRINT_ERROR(x)		raise_error(x)
#define	MEMBER(x, y)		member(x, y)
#define	USERP(x)		query_once_interactive(x)
#define	GET_EVAL_COST()		get_eval_cost()
#define	MAPPINGP(x)		mappingp(x)
#define	FUNCTION_TYPE		closure
#define	FUNCTION(func)		symbol_function("func", this_object())
#define	FUNCTION2(func, ob)	symbol_function("func", ob)
#define	GET_FUNCTION(func)	symbol_function(func)
#define	GET_FUNCTION2(func, ob)	symbol_function(func, ob)
#define	FUNCTIONP(x)		closurep(x)
#define	FUNCTION_VALID(x)	to_object(x)
#define	FUNCALL			funcall
#define	SORT_ARRAY_ASC(x)	sort_array(x, #'>)
#define	SORT_ARRAY_DESC(x)	sort_array(x, #'<)
#define	WALK_MAPPING(map, func)	walk_mapping(map, symbol_function(func, this_object()))
#define	M_DELETE(map,key)	m_delete(map,key)
#define POINTER(var)		& var
#define	E_POINTER(var)		&(var)
#define	PBR_ARG(arg)		arg
#define	IN_MAPPING(map, key)	(member(map, key) > 0)
#define	IN_ARRAY(arr, key)	(member(arr, key) >= 0)
#define	IN_STRING(str, char)	(member(str, char) >= 0)
#define	TO_OBJECT(func)		to_object(func)
#define	REST_ARGS(x)		varargs mixed *x
#define	EXTERN_CALL()		extern_call()
#define	COUNTED_WHITESPACE		"%~t"
#define	COUNTED_OPTIONAL_WHITESPACE	"%~.0t"
#define	TRIM_LEADING_WS(x)	sscanf(x, "%t%s", x)

#define	COPY_MAPPING(x)		copy_mapping(x)

#define	SHARE_STRING(x)		share_string(x)
// I added the hash-function as an 'overload' for ~ - operator. Kludgy!
#define	HASH(x)			~(x)
#define QUERY_MICROS() query_micros()

#endif
#endif

--- clip clip ---