--- deliantra/server/ext/dm-support.ext 2006/12/15 19:29:18 1.1 +++ deliantra/server/ext/dm-support.ext 2007/01/09 15:36:18 1.2 @@ -11,9 +11,13 @@ binmode $fh, ":raw:perlio:utf8"; my $buf; - my ($a,$b,$c,$d,%l,@l); # for use by shell users + my ($a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s, $t, $u, $v, $w, $x, $y, $z); + my (%l, @l); # for use by shell users - print $fh "Welcome\n> "; + print $fh "Welcome!\n", + "Remember that everything entered here will be executed as a sync_job in cf::!\n", + "You can freely use \$a .. \$z and \@l and \%l\n"; + print $fh "\n> "; Event->io (fd => $fh, poll => 'r', data => cf::WF_AUTOCANCEL, cb => sub { if (defined (my $cmd = <$fh>)) { @@ -22,14 +26,17 @@ if ($cmd =~ /^\s*exit\b/i) { print "will not exit() server.\n"; } else { - { + cf::sync_job { package cf; - eval $cmd; - } - print $@ if $@; + my @res = eval $cmd; + warn "tcpshell evaluation error: $@" if $@; + print $@ if $@; + + print cf::dumpval @res > 1 ? \@res : $res[0] if @res; + }; } - print "> "; + print "\n> "; select $old_fh; } else { $_[0]->w->cancel;