projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
started the command processor code.
[spider.git]
/
perl
/
client.pl
diff --git
a/perl/client.pl
b/perl/client.pl
index f7912ad791139d13532759e0971642d7f0ff768a..b2dcfa3a7223d4cebba279b334de3e66a7525d64 100755
(executable)
--- 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
@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
# cease communications
sub cease
@@
-43,6
+42,21
@@
sub sig_term
cease(1);
}
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
{
# handle incoming messages
sub rec_socket
{
@@
-51,15
+65,16
@@
sub rec_socket
cease(1);
}
if (defined $msg) {
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;
if ($sort eq 'D') {
$nl = "" if $mode == 0;
- $line =~ s/\n/\r/o if $mode == 1;
- print $line
, $nl
;
+ $line =~ s/\n/\r/o
g
if $mode == 1;
+ print $line;
} elsif ($sort eq 'M') {
$mode = $line; # set new mode from cluster
} 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);
}
}
cease(0);
}
}
@@
-78,7
+93,7
@@
sub rec_stdin
# print "sys: $r $buf";
if ($r > 0) {
if ($mode) {
# print "sys: $r $buf";
if ($r > 0) {
if ($mode) {
- $buf =~ s/\r/\n/o if $mode == 1;
+ $buf =~ s/\r/\n/o
g
if $mode == 1;
$dangle = !($buf =~ /\n$/);
@lines = split /\n/, $buf;
if ($dangle) { # pull off any dangly bits
$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 <call> [<mode>]\r\n" if (!$call);
$mode = $ARGV[1] if (@ARGV > 1);
$call = uc $ARGV[0];
die "client.pl <call> [<mode>]\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{'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");
$conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket);
$conn->send_now("A$call|start");