Improve M$ Windows compatibility
[spider.git] / cmd / show / announce.pl
index 89d8719239caaf36ec360f51b652a6b4660b3b33..30b1f8798706e2450251a7692d3ae3e822b4e2ae 100644 (file)
@@ -3,17 +3,18 @@
 #
 # Copyright (c) 1998 - Dirk Koopman G1TLH
 #
-# $Id$
+#
 #
 my $self = shift;
 
-return (1, $self->msg('e5')) if $self->priv < 9;
+# this appears to be a reasonable thing for users to do (thank you JE1SGH)
+# return (1, $self->msg('e5')) if $self->priv < 9;
 
 my $cmdline = shift;
 my @f = split /\s+/, $cmdline;
 my $f;
 my @out;
-my ($from, $to); 
+my ($from, $to, $who); 
 
 $from = 0;
 while ($f = shift @f) {                 # next field
@@ -26,9 +27,29 @@ while ($f = shift @f) {                 # next field
                ($to) = $f =~ /^(\d+)$/o if !$to;              # is it a to count?
                next if $to;
        }
+       next if $who;
+       if ($f !~ /^\d+/) {
+               ($who) = $f;
+       }
+       if ($f !~ /^\d+/) {
+               ($who) = $f;
+       }
+       #($who) = $f =~ /^(\w+)/o;
 }
 
-$to = 20 if !$to;
+$to = 20 unless $to;
+$from = 0 unless $from;
+
+# if we can get it out of the cache than do it
+if (!$who && !$from && $to < @AnnTalk::anncache) {
+       my @in = @AnnTalk::anncache[-$to .. -1];
+       for (@in) {
+               push @out, DXLog::print_item($_);
+       }
+       return (1, @out);
+}
 
-@out = DXLog::print($from, $to, $main::systime, '^ann');
+return (1, DXLog::print($from, $to, $main::systime, 'ann', $who)) if ($self->{_nospawn} || $main::is_win == 1) || $DB::VERSION;
+return (1, $self->spawn_cmd("show/announce $cmdline", \&DXLog::print, args => [$from, $to, $main::systime, 'ann', $who]));
+       
 return (1, @out);