started the command processor code.
[spider.git] / perl / client.pl
index 0cdbe9c2b3f1e57f26706389a47586de570b976b..b2dcfa3a7223d4cebba279b334de3e66a7525d64 100755 (executable)
 # $Id$
 # 
 
+BEGIN {
+  unshift @INC, "/spider/local";
+  unshift @INC, "/spider/perl";
+}
+
 use Msg;
 use DXVars;
 
@@ -37,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
 {
@@ -45,16 +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') {
-          my $nl = ($mode == 1) ? "\r" : "\n";
           $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);
     }    
   } 
@@ -73,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
@@ -98,8 +118,11 @@ sub rec_stdin
 $call = uc $ARGV[0];
 die "client.pl <call> [<mode>]\r\n" if (!$call);
 $mode = $ARGV[1] if (@ARGV > 1);
+setmode();
+
 
-select STDOUT; $| = 1;
+#select STDOUT; $| = 1;
+STDOUT->autoflush(1);
 
 $SIG{'INT'} = \&sig_term;
 $SIG{'TERM'} = \&sig_term;