#!/afs/athena/contrib/perl/p

require '/mit/mkgray/perl/chat2.pl';
require '/mit/mkgray/perl/io.pl';

sub listen {
        local($secs) = @_;
        local($return,$tmp) = "";
        while (length($tmp = &chat'expect($secs, '(.|\n)+', '$&'))) {
                print $tmp if $trace;
                $return .= $tmp;
        }
        $return;
}


while(1){
	print(&listen(4)) if $connected;
	$inp = &io'input();
        if(substr($inp, 0,1) eq '/')
        {
		$sp = index($inp,' ');
		($sp = length($inp)) if($sp==-1);
		$rest = substr($inp,$sp+1);
		$routine = substr($inp,1,$sp-1);
		&$routine($rest);		  
	}
	else
	{
		&chat'print("$inp\n") if $connected;
	}
}

	sub echo {
		local($str)=@_;
		print("$str\n");
	}
	sub evil {
		&connect('fido.econlab.arizona.edu 4201');
		print(&listen(6));
		&chat'print("connect Matthew foofoobar\n");
	}

	sub connect {
		local($opts)=@_;
		($host, $port)=split(/ /,$opts);
		$connected =1;
		(&chat'open_port($host, $port))|| do{
		print("Connection failed\n");
		$connected = 0;}
	}

	sub newroom {
		local($name)=@_;
		&chat'print("@dig $name\n");
		$cnum = &listen(3);
		$cnum =~/ number /;
		$numid = $';
		chop($numid);
		print("Exits from here to there?:");
		$exits = &io'input();
		($go, @rest) = split(/;/,$exits);
		&chat'print("@open $exits = $numid\n");
		print("Osucc:");
		$osucc=&io'input();
		&chat'print("@osucc $go=$osucc\n");
		print("Odrop:");
		$odrop=&io'input();
		&chat'print("@odrop $go=$odrop\n");
		print("Exits from there to here:");
		$exits2=&io'input();
		&listen(1);
		&chat'print("l here\n");
		$cnum = &listen(3);
		$cnum2= substr($cnum,0,index($cnum,"\n"));
		$cnum2 =~/#(\d+)\D*/;
		$idnum = '#'.$1;
		print("Current room id: $idnum\n");
		&chat'print("$go\n");
		&chat'print("@open $exits2 = $idnum\n");
		($go2, @rest) = split(/;/,$exits2);
		print("Osucc:");
		$osucc=&io'input();
		&chat'print("@osucc $go2=$osucc\n");
		print("Odrop:");
		$odrop=&io'input();
		&chat'print("@odrop $go2=$odrop\n");
		print("Description:");
		$descr=&io'input();
		&chat'print("@desc here=$descr\n");		
	}
sub bogus {
		local($name)=@_;
	&chat'print("@open $name=here\n");
	($ex, @rest) = split(/;/,$name);
	&chat'print("@lock $ex=me&!me\n");
	print("Ofail:");
	$ofail = &io'input();
	print("Fail:");
	$fail=&io'input();
	&chat'print("@ofail $ex=$ofail\n");
	&chat'print("@fail $ex=$fail\n");
	&chat'print("@desc $ex=$fail\n");
	}
