projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename setmode for freebsd
[spider.git]
/
perl
/
winclient.pl
diff --git
a/perl/winclient.pl
b/perl/winclient.pl
index e0c89efe4174a3e21b5a228794fd97a96b108554..58db0b8c95f4ce960f4adbddabac9cd618738335 100755
(executable)
--- a/
perl/winclient.pl
+++ b/
perl/winclient.pl
@@
-70,20
+70,27
@@
die "can't fork: $!" unless defined($childpid = fork());
# the communication .....
if ($childpid) {
# the communication .....
if ($childpid) {
+ my ($lastend, $end) = ("\n", "\n");
+
STDOUT->autoflush(1);
while (defined (my $msg = <$handle>)) {
my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/;
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;
if ($sort eq 'Z') {
kill 'TERM', $childpid;
+ exit(0);
} elsif ($sort eq 'E' || $sort eq 'B') {
;
} else {
# newline ends all lines except a prompt
} 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 = ' ';
}
$end = ' ';
}
- print $line . $end;
+ my $begin = ($lastend eq "\n") ? '' : "\n";
+ print $begin . $line . $end;
}
}
kill 'TERM', $childpid;
}
}
kill 'TERM', $childpid;