File: done.cc

package info (click to toggle)
filtermail 1.06.00-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,688 kB
  • sloc: cpp: 2,487; fortran: 249; makefile: 106; ansic: 51; sh: 36
file content (39 lines) | stat: -rw-r--r-- 1,145 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#define XERR
#include "filter.ih"

void Filter::done()
{
    Log &log = Log::instance();
    Options &options = Options::instance();

    if (options.syntax())
    {
        log << "syntax check completed" << endl;
        return;
    }

    if (not d_condition.matched())
        log << "mail accepted by default" << endl;

                                                // use the proper mail file
                                                // handler
    Mail &mail = Mail::instance();

    ostream *out = options.mailFile(d_action);
    if (not out)                                // mail is ignored
        return;

    if (not options.logIgnored(d_action))       // mail is appended
        *out << mail << '\n' << Expr::input().rdbuf();
    else            
    {                                           // only headers are appended
        mail.hdr("From:");
        string from = mail.headers().front();
        mail.hdr("Subject:");
        *out  << "Received " << Options::mailType(d_action) << " mail:\n"
                "   From: " << from << "\n"
                "   Subject: " << mail.headers().front() << endl;
    }
}