SYNOPSIS
        #include <sys/driver_hooks.h>

        set_driver_hook(H_TELNET_NEG, value)

        <value> being:

          void <name>(int flag, object user, int no_telnet)
          void <closure>(int flag, object user, int no_telnet)

DESCRIPTION
        Optional hook to specifiy how to perform the telnet actions to
        switch the echo mode (used for e.g. password input_to()s).
        Hook setting may be any closure or a string.  If not set, a
        default handling is performed.

        If the setting is a string, it used as name of an lfun to call
        in the interactive <user>, where <flag> is the echo-flag
        passed to the input_to() statement.

        If the setting is a closure, it is called with the same
        arguments, and unbound lambda-closures being bound to
        this_player() prior to execution.

        <local> is a boolean flag: it is TRUE when input_to() was
        called with the INPUT_NO_TELNET flag.

        When set, the hook is called whenever the driver needs to
        change the echo mode, thus you can negotiate about things that
        are coupled with it, like LINEMODE or character-at-a-time.

        IMPORTANT: If this hook is used, the control of all telnet
        negotiation is transferred to the mudlib: all incoming negotiations
        are passed to H_TELNET_NEG, and the sending of no-echo negotiations
        is handled by this hook.

HISTORY
        LDMud 3.2.11/LDMud 3.3.593 added the <no_telnet> argument.

SEE ALSO
        hooks(C), telnet(C), telnet_neg(H)
