DEPRECATED
SYNOPSIS
        int prevent_insert()

DESCRIPTION
        In compat mode, this function is used by the efun transfer().

        Define this function in objects that are neither living nor
        rooms if you want to prevent to put something into current
        object.

        Return true if ok, otherwise 0. That means that default is
        that it is not possible to put something into an object.

HISTORY
        Deprecated in LDMud 3.3 as transfer() has been deprecated.

SEE ALSO
        transfer(E), can_put_and_get(A)
