/*
* This handels the telnet sub option stuff. Will be mostly for handleing
* terminal types. Though you can get other information out of the
* telnet connection.
*/
#include "telnet.h"
nosave string last_term;
nosave int got_terminal;
void check_terminal_type(string type);
void telnet_suboption(string str) {
switch (str[0]) {
case TELOPT_TTYPE :
if (str[1] != TELQUAL_IS)
return ;
check_terminal_type(str[2..1000]);
break;
}
} /* telnet_suboption() */
/* Send all the relevant junk down to get the information we want. */
void player_connected() {
/* Turn on the option */
printf("%c%c%c", IAC, DO, TELOPT_TTYPE);
/* Get them to send us their first terminal type */
printf("%c%c%c%c%c%c", IAC, SB, TELOPT_TTYPE, TELQUAL_SEND, IAC, SE);
} /* player_connected() */
void check_terminal_type(string type) {
if (last_term == type) {
/* We have cycled. This is the last valid type. We failed! */
if (!got_terminal)
this_object()->set_network_terminal_type(0);
return ;
}
if (!got_terminal && this_object()->set_network_terminal_type(type))
got_terminal = 1;
/* Ask them for thr next terminal type */
printf("%c%c%c%c%c%c", IAC, SB, TELOPT_TTYPE, TELQUAL_SEND, IAC, SE);
last_term = type;
} /* check_terminal_type() */