added logging
[spider.git] / perl / DXCommandmode.pm
index 5348212d620ceb7c09626f5c9d7f56ef3d5690a8..aa4cb1a37a4fb287f9245612ec0b9d88e1c8c346 100644 (file)
@@ -17,6 +17,7 @@ use DXUser;
 use DXVars;
 use DXDebug;
 use DXM;
+use DXLog;
 use CmdAlias;
 use FileHandle;
 use Carp;
@@ -74,6 +75,7 @@ sub start
   my $nchan = DXChannel->get($main::mycall);
   my @pc16 = DXProt::pc16($nchan, $cuser);
   DXProt::broadcast_ak1a(@pc16);
+  Log('DXCommand', "$call connected");
 }
 
 #
@@ -124,7 +126,7 @@ sub normal
          ($path, $fcmd) = search($main::cmd, $cmd, "pl") if !$path || !$fcmd;
 
       my $package = find_cmd_name($path, $fcmd);
-         @ans = (0, "Syserr: compile err on $package\n$@$errstr") if !$package ;
+         @ans = (0) if !$package ;
 
       if ($package) {
            my $c = qq{ \@ans = $package(\$self, \$args) };
@@ -137,15 +139,13 @@ sub normal
        }
   }
        
-#    my @ans = $self->eval_file($path, $fcmd, $args) if $path && $fcmd;
-#      @ans = $self->eval_file($main::cmd, $cmd, $args) if !$ans[0];
   if ($ans[0]) {
     shift @ans;
        $self->send(@ans) if @ans > 0;
   } else {
     shift @ans;
        if (@ans > 0) {
-         $self->send($self->msg('e2', @ans));
+         $self->send($self->msg('e2'), @ans);
        } else {
       $self->send($self->msg('e1'));
        }
@@ -194,7 +194,8 @@ sub finish
   my $nchan = DXChannel->get($main::mycall);
   my $pc17 = $nchan->pc17($self);
   DXProt::broadcast_ak1a($pc17);
-  
+
+  Log('DXCommand', "$call disconnected");
   $ref->del() if $ref;
 }
 
@@ -394,6 +395,7 @@ sub find_cmd_name {
        my $fh = new FileHandle;
        if (!open $fh, $filename) {
          $errstr = "Syserr: can't open '$filename' $!";
+         return undef;
        };
        local $/ = undef;
        my $sub = <$fh>;
@@ -424,7 +426,6 @@ sub find_cmd_name {
          print "\$\@ = $@";
          $errstr = $@;
          delete_package($package);
-         $package = undef;
        } else {
       #cache it unless we're cleaning out each time
          $Cache{$package}{mtime} = $mtime;
@@ -433,6 +434,7 @@ sub find_cmd_name {
   
   #print Devel::Symdump->rnew($package)->as_string, $/;
   $package = "DXCommandmode::$package" if $package;
+  $package = undef if $errstr;
   return $package;
 }