use IO::Socket;
use IPC::Open2;
use Net::Telnet qw(TELOPT_ECHO);
-use Carp;
+use Carp qw{cluck};
# cease communications
sub cease
kill(9, $pid);
}
dbgclose();
+# $SIG{__WARN__} = sub {my $a = shift; cluck($a); };
sleep(1);
exit(0);
}
cease(1);
}
if (defined $msg) {
- my ($sort, $call, $line) = $msg =~ /^(\w)(\S+)\|(.*)$/;
+ my ($sort, $call, $line) = $msg =~ /^(\w)([A-Z0-9\-]+)\|(.*)$/;
if ($sort eq 'D') {
my $snl = $mynl;
# $prbuf =~ s/\r/\\r/;
# $prbuf =~ s/\n/\\n/;
# print "sys: $r ($prbuf)\n";
- if ($r > 0) {
+ if (!defined $r || $r == 0) {
+ cease(1);
+ } elsif ($r > 0) {
if ($mode) {
$buf =~ s/\r/\n/og if $mode == 1;
$buf =~ s/\r\n/\n/og if $mode == 2;
} else {
$conn->send_later("I$call|$buf");
}
- } elsif ($r == 0) {
- cease(1);
- }
+ }
$lasttime = time;
}
$rfh = new IO::File;
$wfh = new IO::File;
$pid = open2($rfh, $wfh, "$line") or die "can't do $line $!";
+ die "no receive channel $!" unless $rfh;
+ die "no transmit channel $!" unless $wfh;
dbg('connect', "got pid $pid");
$wfh->autoflush(1);
} else {
# deal with args
#
-$call = uc shift @ARGV;
+$call = uc shift @ARGV if @ARGV;
$call = uc $myalias if !$call;
-$connsort = lc shift @ARGV;
+$connsort = lc shift @ARGV if @ARGV;
$connsort = 'local' if !$connsort;
$loginreq = $call eq 'LOGIN';
open IN, "$data/offline" or die;
while (<IN>) {
s/\n/\r/og if $mode == 1;
- print $stdout;
+ print $stdout $_;
}
close IN;
} else {