Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time
#include <sys/driver_hooks.h>
set_driver_hook(H_TELNET_NEG, value)
<value> being:
void|mixed <name>(int action, int option [, int * opts ] )
void|mixed <closure>(int action, int option [, int * opts ] )
Optional hook to specifiy how to perform a single telnet
negotiation. Hook setting may be any closure or a string. If
not set, most telnet options are rejected (read: only a very
minimal negotiation takes place).
The hook is called whenever the driver receives a demand for
option negotiation for any option the driver does not handle itself.
By default, the driver deals with the following options:
TELOPT_ECHO: Echo option
TELOPT_SGA: Suppress Go Ahead (nearly always on)
TELOPT_COMPRESS: Mud client compression protocol (obsolete)
TELOPT_COMPRESS2: Mud client compression protocol V2
For all other telnet options negotiations, this hook is called.
The hook has then to perform the negotiation using the efun
Alternatively, if H_NOECHO is set, this hook is called for
_all_ telnet data received.
If the setting is a string, it used as the name of an lfun to
call in this_player(). Closures are just called, with unbound
lambda-closures being bound to this_player() prior to execution.
The hook is called for a 'DO/DONT/WILL/WONT <opt>' with the action
(DO/DONT/...) as the first, and <opt> as the second argument.
For example:, if the driver receives the sequence
IAC SB <opt> <opts>...
followed by IAC SB/SE, the hook is called with 'SB' as first
argument, <opt> as second, and <opts> as an array of integers as
third argument.
An incomplete list of telnet negotiations this hook is called
for includes the following:
SB: Suboption negotiation
TELOPT_NAWS: window size
TELOPT_TTYPE: terminal type
TELOPT_TM: timing mark
TELOPT_NEWENV: remote environment variables
TELOPT_ENVIRON: remote environment variables
TELOPT_XDISPLOC: remote X display address
TELOPT_TSPEED: terminal speed
TELOPT_BINARY: binary data, needed for non-ASCII charsets
TELOPT_EOR: TinyFugue prompt marker (together with EOR)
TELOPT_MSP: Mud Sound Protocol
TELOPT_MXP: Mud Extension Protocol
TELOPT_MSSP: Mud Server Status Protocol
TELOPT_GMCP: Generic Mud Communication Protocol
hooks(C), telnet(C), no_echo(H)