fix always 'telnet' in a connect script with a client line
[spider.git] / perl / winclient.pl
index e0c89efe4174a3e21b5a228794fd97a96b108554..58db0b8c95f4ce960f4adbddabac9cd618738335 100755 (executable)
@@ -70,20 +70,27 @@ die "can't fork: $!" unless defined($childpid = fork());
 
 # the communication .....
 if ($childpid) {
+       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
-                       my $end = "\n";
-                       if ($line =~ /^$call de $mycall\s+\d+-\w\w\w-\d+\s+\d+Z >$/) {
+                       $lastend = $end;
+                       $end = "\n";
+                       if ($line =~ /^$call de $mycall\s+\d+-\w\w\w-\d+\s+\d+Z >$/o) {
                                $end = ' ';
                        }
-                       print $line . $end;
+                       my $begin = ($lastend eq "\n") ? '' : "\n";
+                       print $begin . $line . $end;
                }
     }
     kill 'TERM', $childpid;