fix console.pl max scroll depth
[spider.git] / cmd / export.pl
1 #
2 # export a message
3 #
4 # Copyright (c) Dirk Koopman G1TLH
5 #
6 #
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 my $fn;
16
17 return (1, $self->msg("e5")) if $self->priv < 9 || $self->consort ne 'local' || $self->remotecmd || $self->inscript;
18
19 return (1, $self->msg("export1")) unless @f == 2 && $f[0] =~ /^\d+$/;
20 $msgno = $f[0];
21 $fn = $f[1];
22
23 $ref = DXMsg::get($f[0]);
24 return (1, $self->msg('read2', $msgno)) unless $ref;
25 if (-e $fn) {
26         my $m = $self->msg('e16', $fn);
27         Log('msg', $self->call . " tried to export $m");
28         dbg($m) if isdbg('msg');
29         return (1, $m);
30 }
31
32 return (1, $self->msg('e16', $fn)) if -e $fn;
33
34 my $s = $ref->private ? "SP " : "SB " ;
35 push @body, $s  .  $ref->to . " < " . $ref->from;
36 push @body, $ref->subject;
37 push @body, $ref->read_msg_body;
38 push @body, "/EX";
39
40 my $fh = new IO::File ">$fn";
41 my $m;
42 if ($fh) {
43         print $fh map { "$_\n" } @body;
44         $fh->close;
45     $m = $self->msg('export3', $msgno, $fn, $self->call);
46 } else {
47         $m = $self->msg('export2', $msgno, $fn, $!, $self->call);
48
49 Log('msg', $m);
50 dbg($m) if isdbg('msg');
51 push @out, $m;
52
53 return (1, @out);