SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_PRINT_PROMPT, value)

        <value> being:

          void <name>(string prompt).
          void <closure>(string prompt)

DESCRIPTION
        Optional hook to print the current command prompt. If this
        hook is not set, the driver will just print the prompt to the
        user.

        The hook is called with the prompt string as single argument
        and has to print the prompt, e.g. using write() or
        binary_message().

        If the hook is a string, it is the name of an lfun in the
        command giver. If the hook is a closure, it is called
        with the command giver as previous object.

HISTORY
        Introduced in LDMud 3.3.163.

SEE ALSO
        hooks(C), default_prompt(H)
