SYNOPSIS
        #include <trace.h>

        string traceprefix(string prefix)
        string traceprefix(int dummy)

DESCRIPTION
        If called with a string, only objects matching this prefix will
        be traced. The string must not contain a leading "/" because
        the object names are stored internally without it. If called
        with a number, the traceprefix will be ignored and all objects
        will be traced. Returns the last traceprefix or 0 if there
        wasn't any.

        The master-lfun valid_trace() is called with ("traceprefix", prefix)
        as arguments to verify the use of this efun.

EXAMPLES
        object obj;
        string prefix;
        obj = find_player("wessex");
        prefix = object_name(obj);
        prefix = prefix[1..];  /* cut off the leading "/" */
        traceprefix(prefix);
          /* From here on, only code in the object "std/player#69"
           * will be traced.
           */
        trace(TRACE_CALL | TRACE_CALL_OTHER | TRACE_RETURN | TRACE_ARGS);
        ...
        trace(TRACE_NOTHING);

HISTORY
        LDMud 3.2.9 passes the <prefix> argument to the valid_trace()
        apply as well.

SEE ALSO
        trace(E)
