#include <fstream>

#include <general.h>
#include <sfolderrfc.h>
#include <stringtools.h>
#include <rfc1522.h>
#include <logf.h>

#include "deliverrfc.h"

bool match_header(const rfcmessaget &m,
                  const std::string &header,
                  const std::string &pattern)
 {
  const char *start=m.data, *text;
  bool mime_decode=FALSE;

  if(stringcasecmp(header, "From")==0 ||
     stringcasecmp(header, "Subject")==0)
    mime_decode=TRUE;

  while(!m.findheader(&start, header.c_str(), &text))
   {
    std::string header_text;
    m.copyheadertext(header_text, text);

    if(mime_decode)
      header_text=decode_rfc1522(header_text);

    if(check_joker(pattern, header_text, TRUE))
      return TRUE;
   }

  return FALSE;
 }

#include "deliver.t"

typedef deliver_mailt<rfcmessaget> rfc_deliver_mailt;

bool deliver_mail(rfcmessaget &m,
                  userpt &up,
                  const std::string &envelope_to,
                  const std::string &envelope_from)
 {
  rfc_deliver_mailt deliver_mail(m, up, envelope_to, envelope_from);

  return deliver_mail.deliver_mail();
 }



syntax highlighted by Code2HTML, v. 0.9.1