#include "substdio.h"
#include "strerr.h"
#include "subfd.h"
#include "getln.h"
#include "mess822.h"
#include "case.h"
#include "env.h"
#include "exit.h"
#define FATAL "iftocc: fatal: "
void nomem()
{
strerr_die2x(111,FATAL,"out of memory");
}
stralloc addrlist = {0};
mess822_header h = MESS822_HEADER;
mess822_action a[] = {
{ "to", 0, 0, 0, &addrlist, 0 }
, { "cc", 0, 0, 0, &addrlist, 0 }
, { 0, 0, 0, 0, 0, 0 }
} ;
stralloc line = {0};
int match;
char *recipient;
char **recips;
void check(addr)
char *addr;
{
int i;
if (recipient)
if (case_equals(addr,recipient)) _exit(0);
if (!recipient)
for (i = 0;recips[i];++i)
if (case_equals(addr,recips[i])) _exit(0);
}
void main(argc,argv)
int argc;
char **argv;
{
int i;
int j;
recipient = env_get("RECIPIENT");
recips = argv + 1;
if (*recips) recipient = 0;
if (!mess822_begin(&h,a)) nomem();
for (;;) {
if (getln(subfdinsmall,&line,&match,'\n') == -1)
strerr_die2sys(111,FATAL,"unable to read input: ");
if (!mess822_ok(&line)) break;
if (!mess822_line(&h,&line)) nomem();
if (!match) break;
}
if (!mess822_end(&h)) nomem();
for (j = i = 0;j < addrlist.len;++j)
if (!addrlist.s[j]) {
if (addrlist.s[i] == '+')
check(addrlist.s + i + 1);
i = j + 1;
}
_exit(100);
}
syntax highlighted by Code2HTML, v. 0.9.1