X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=b2dcfa3a7223d4cebba279b334de3e66a7525d64;hb=f46017e7bef9ee062cd5a8648d214eabe585da25;hp=f7912ad791139d13532759e0971642d7f0ff768a;hpb=60c0ea1747bc8ad95e531d29025f7bcee4fd10c1;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index f7912ad7..b2dcfa3a 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -25,7 +25,6 @@ $call = ""; # the callsign being used @stdoutq = (); # the queue of stuff to send out to the user $conn = 0; # the connection object for the cluster $lastbit = ""; # the last bit of an incomplete input line -$nl = "\r"; # cease communications sub cease @@ -43,6 +42,21 @@ sub sig_term cease(1); } +sub setmode +{ + if ($mode == 1) { + $nl = "\r"; + } else { + $nl = "\n"; + } + $/ = $nl; + if ($mode == 0) { + $\ = undef; + } else { + $\ = $nl; + } +} + # handle incoming messages sub rec_socket { @@ -51,15 +65,16 @@ sub rec_socket cease(1); } if (defined $msg) { - my ($sort, $call, $line) = $msg =~ /^(\w)(\S+)|(.*)$/; + my ($sort, $call, $line) = $msg =~ /^(\w)(\S+)\|(.*)$/; if ($sort eq 'D') { $nl = "" if $mode == 0; - $line =~ s/\n/\r/o if $mode == 1; - print $line, $nl; + $line =~ s/\n/\r/og if $mode == 1; + print $line; } elsif ($sort eq 'M') { $mode = $line; # set new mode from cluster - } elsif ($sort eq 'Z') { # end, disconnect, go, away ..... + setmode(); + } elsif ($sort eq 'Z') { # end, disconnect, go, away ..... cease(0); } } @@ -78,7 +93,7 @@ sub rec_stdin # print "sys: $r $buf"; if ($r > 0) { if ($mode) { - $buf =~ s/\r/\n/o if $mode == 1; + $buf =~ s/\r/\n/og if $mode == 1; $dangle = !($buf =~ /\n$/); @lines = split /\n/, $buf; if ($dangle) { # pull off any dangly bits @@ -103,17 +118,15 @@ sub rec_stdin $call = uc $ARGV[0]; die "client.pl []\r\n" if (!$call); $mode = $ARGV[1] if (@ARGV > 1); +setmode(); -if ($mode != 1) { - $nl = "\n"; - $\ = $nl; -} -select STDOUT; $| = 1; +#select STDOUT; $| = 1; +STDOUT->autoflush(1); $SIG{'INT'} = \&sig_term; $SIG{'TERM'} = \&sig_term; -#$SIG{'HUP'} = \&sig_term; +$SIG{'HUP'} = \&sig_term; $conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket); $conn->send_now("A$call|start");