SYNOPSIS
	string valid_read(string path, string uid, string func, object ob)

DESCRIPTION
	This function is called to check if the object ob with the
	user-id uid has read permissions for the file given by path
	for the operation named by func. It should return 0 if
	permission is denied, or the normalized path if permission is
	granted. You can also return 1 to indicate that the path can
	be used unchanged.

	The returned pathname must not contain ``..'', a leading /
	will be stripped by the interpreter.

	Func denotes the efun call or other operation that caused
	valid_read() to be called:
	ed_start (check if the file to be edited is readable),
	file_size,
	get_dir,
	print_file (efun cat()),
	read_bytes,
	read_file,
	restore_object,
	tail.

	Note that this function is called in compat mode as well. If
	you need to be compatible with the old 2.4.5-mudlib, redirect
	these calls to the valid_read/valid_write in the user
	object.

SEE ALSO
	valid_write(M), make_path_absolute(M)
