X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fwinclient.pl;h=58db0b8c95f4ce960f4adbddabac9cd618738335;hb=d339a58bd419901bf4294aaa138c000a8c2ae139;hp=cf0da0a2ffef78deeceeac86b0356e9a8e3f64e1;hpb=939f8bb6109d870978d7db849136c8a2aa945e4d;p=spider.git diff --git a/perl/winclient.pl b/perl/winclient.pl index cf0da0a2..58db0b8c 100755 --- a/perl/winclient.pl +++ b/perl/winclient.pl @@ -70,20 +70,23 @@ die "can't fork: $!" unless defined($childpid = fork()); # the communication ..... if ($childpid) { - my ($lastend, $end); + my ($lastend, $end) = ("\n", "\n"); STDOUT->autoflush(1); while (defined (my $msg = <$handle>)) { my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; + next unless defined $sort; + $line =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg; if ($sort eq 'Z') { kill 'TERM', $childpid; + exit(0); } elsif ($sort eq 'E' || $sort eq 'B') { ; } else { # newline ends all lines except a prompt $lastend = $end; $end = "\n"; - if ($line =~ /^$call de $mycall\s+\d+-\w\w\w-\d+\s+\d+Z >$/) { + if ($line =~ /^$call de $mycall\s+\d+-\w\w\w-\d+\s+\d+Z >$/o) { $end = ' '; } my $begin = ($lastend eq "\n") ? '' : "\n";