a1352724bb486a95997cea6e3bb1ab90a60da767
[spider.git] / cmd / read.pl
1 #
2 # read a message
3 #
4 # Copyright (c) Dirk Koopman G1TLH
5 #
6 # $Id$
7 #
8
9 my ($self, $line) = @_;
10 my @f = split /\s+/, $line;
11 my $msgno;
12 my @out;
13 my @body;
14 my $ref;
15
16 # if there are no specified message numbers, try and find a private one
17 # that I haven't read yet
18 if (@f == 0) {
19   foreach $ref (DXMsg::get_all()) {
20         if ($ref->to eq $self->call && $ref->private && !$ref->read) {
21           push @f, $ref->msgno;
22           last;
23         }
24   }
25 }
26
27 return (1, "Sorry, no new messages for you") if @f == 0;
28
29 for $msgno (@f) {
30   $ref = DXMsg::get($msgno);
31   if (!$ref) {
32     push @out, "Msg $msgno not found";
33         next;
34   }
35   if ($self->priv < 5 && $ref->private && $ref->to ne $self->call && $ref->from ne $self->call ) {
36     push @out, "Msg $msgno not available";
37         next;
38   }
39   push @out, sprintf "Msg: %d From: %s Date: %6.6s %5.5s Subj: %-30.30s", $msgno,
40                      $ref->from, cldate($ref->t), ztime($ref->t), $ref->subject;
41   @body = $ref->read_msg_body;
42   push @out, @body;
43   
44   # mark my privates as read
45   if ($ref->private && $self->call eq $ref->to && $ref->read == 0) {
46     $ref->read(1);
47     $ref->store(\@body);    # note call by reference!
48   }
49   
50   # remember this one as the last one read
51   $self->lastread($msgno);
52 }
53
54 return (1, @out);