1. did some work on making talk more intelligent and fixed a>b problem.
[spider.git] / perl / ExtMsg.pm
index 7b33b6e2780d43e19d663d63f0fe4bdf59a0b14f..ae0e218b25c8575a73b71efeb0d4ed2cffbd3a56 100644 (file)
@@ -21,6 +21,12 @@ use IO::File;
 use IO::Socket;
 use IPC::Open3;
 
+use vars qw($VERSION $BRANCH);
+$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
+$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0;
+$main::build += $VERSION;
+$main::branch += $BRANCH;
+
 use vars qw(@ISA $deftimeout);
 
 @ISA = qw(Msg);
@@ -77,7 +83,7 @@ sub dequeue
                if ($conn->{msg} =~ /\cJ$/) {
                        delete $conn->{msg};
                } else {
-                       $conn->{msg} = pop @lines;
+                       $conn->{msg} =~ s/([^\cM\cJ]*)\cM?\cJ//g;
                }
                while (defined ($msg = shift @lines)) {
                        dbg("connect $conn->{cnum}: $msg") if $conn->{state} ne 'C' && isdbg('connect');
@@ -200,8 +206,8 @@ sub _docmd
                                last;
                        }  
                }
-               if ($cmd =~ /^\s*\'.*\'\s+\'.*\'/i) {
-                       $conn->_dochat($cmd, $msg);
+               if ($cmd =~ /^\s*\'([^\']*)\'\s+\'([^\']*)\'/) {
+                       $conn->_dochat($cmd, $msg, $1, $2);
                        last;
                }
                if ($cmd =~ /^\s*cl\w+\s+(.*)/i) {
@@ -317,9 +323,10 @@ sub _dochat
        my $conn = shift;
        my $cmd = shift;
        my $line = shift;
+       my $expect = shift;
+       my $send = shift;
                
        if ($line) {
-               my ($expect, $send) = $cmd =~ /^\s*\'(.*)\'\s+\'(.*)\'/;
                if ($expect) {
                        dbg("connect $conn->{cnum}: expecting: \"$expect\" received: \"$line\"") if isdbg('connect');
                        if ($conn->{abort} && $line =~ /\Q$conn->{abort}/i) {