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. By default, the returned
        path must also not contain space characters; if the driver
        is instructed to allow them, the preprocessor macro
        __FILENAME_SPACES__ is defined.

        Func denotes the efun call or other operation that caused
        valid_read() to be called:

          copy_file
          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.

        For restore_object(), the <path> passed is the filename as given
        in the efun call.

        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)
