1. Added set/name, set/qra, set/location, set/qth, set/homenode, set/bbs,
[spider.git] / perl / CmdAlias.pm
index e5f6686ab05811e500603b470364806f923809b0..a424f8e861ebb5a00cb15f415293be47bb8db3fa 100644 (file)
@@ -41,34 +41,31 @@ use Carp;
 
 use strict;
 
-use vars qw(%alias $cmd_mtime $localcmd_mtime $fn $localfn);
+use vars qw(%alias $fn $localfn);
 
 %alias = ();
 
-$cmd_mtime = 1;
-$localcmd_mtime = 1;
-
 $fn = "$main::cmd/Aliases";
 $localfn = "$main::localcmd/Aliases";
 
-sub checkfiles
+sub load
 {
-  my $m = -M $fn;
-#  print "m: $m oldmtime: $cmd_mtime\n";
-  if ($m < $cmd_mtime) {
-    do $fn;
+       my $ref = shift;
+       if (-e $localfn) {
+               do $localfn;
+               return ($@) if $@ && ref $ref;
+               confess $@ if $@;
+               return ();
+       }
+       do $fn;
+       return ($@) if $@ && ref $ref;
        confess $@ if $@;
-       $cmd_mtime = $m;
-       $localcmd_mtime = 0;
-  } 
-  if (-e $localfn) {
-    $m = -M $localfn;
-       if ($m < $localcmd_mtime) {
-      do $localfn;
-         confess $@ if $@;
-         $localcmd_mtime = $m;
-    } 
-  }
+       return ();
+}
+
+sub init
+{
+       load();
 }
 
 #
@@ -82,15 +79,13 @@ sub get_cmd
 
   $let = lc $let;
   
-  checkfiles();
-  
   $ref = $alias{$let};
   return undef if !$ref;
   
   $n = @{$ref};
   for ($i = 0; $i < $n; $i += 3) {
     if ($s =~ /$ref->[$i]/i) {
-         my $ri = qq{\$ro = "$ref->[$i+1]"};
+         my $ri = qq{\$ro = "$ref->[$i+1]"};
          my $ro;
          eval $ri;
          return $ro;
@@ -110,16 +105,16 @@ sub get_hlp
 
   $let = lc $let;
   
-  checkfiles();
-  
   $ref = $alias{$let};
   return undef if !$ref;
   
   $n = @{$ref};
   for ($i = 0; $i < $n; $i += 3) {
     if ($s =~ /$ref->[$i]/i) {
-         my $ri = qq{$ref->[$i+2]};
-         return $ri;
+         my $ri = qq{\$ro = "$ref->[$i+2]"};
+         my $ro;
+         eval $ri;
+         return $ro;
        }
   }
   return undef;