mess822x
1.23
mess822x
Loading...
Searching...
No Matches
mess822x-1.23
src
iftocc.c
Go to the documentation of this file.
1
#include "buffer.h"
2
#include "getln.h"
3
#include "
mess822.h
"
4
#include "case.h"
5
#include "env.h"
6
#include "exit.h"
7
#include "logmsg.h"
8
9
#define WHO "iftocc"
10
11
static
void
nomem()
12
{
13
logmsg(
WHO
,111,FATAL,
"out of memory"
);
14
}
15
16
stralloc
addrlist
= {0};
17
18
mess822_header
h
=
MESS822_HEADER
;
19
mess822_action
a
[] = {
20
{
"to"
, 0, 0, 0, &
addrlist
, 0, 0 }
21
, {
"cc"
, 0, 0, 0, &
addrlist
, 0, 0 }
22
, { 0, 0, 0, 0, 0, 0, 0 }
23
} ;
24
25
stralloc
line
= {0};
26
int
match
;
27
28
char
*
recipient
= 0;
29
char
**
recips
= {0};
30
31
static
void
check(
char
*addr)
32
{
33
int
i;
34
35
if
(
recipient
) {
36
if
(case_equals(addr,
recipient
)) _exit(0);
37
}
else
38
for
(i = 0;
recips
[i]; ++i)
39
if
(case_equals(addr,
recips
[i])) _exit(0);
40
}
41
42
int
main
(
int
argc,
char
**argv)
43
{
44
int
i;
45
int
j;
46
47
if
(argc)
recips
= argv + 1;
48
else
recipient
= env_get(
"RECIPIENT"
);
49
50
if
(!
mess822_begin
(&
h
,
a
)) nomem();
51
52
for
(;;) {
53
if
(getln(buffer_0,&
line
,&
match
,
'\n'
) == -1)
54
logmsg(
WHO
,111,FATAL,
"unable to read input: "
);
55
56
if
(!
mess822_ok
(&
line
))
break
;
57
if
(!
mess822_line
(&
h
,&
line
)) nomem();
58
if
(!
match
)
break
;
59
}
60
61
if
(!
mess822_end
(&
h
)) nomem();
62
63
for
(j = i = 0; j <
addrlist
.len; ++j)
64
if
(!
addrlist
.s[j]) {
65
if
(
addrlist
.s[i] ==
'+'
)
66
check(
addrlist
.s + i + 1);
67
i = j + 1;
68
}
69
70
_exit(100);
71
}
main
int main()
Definition:
822print.c:351
recips
char ** recips
Definition:
iftocc.c:29
a
mess822_action a[]
Definition:
iftocc.c:19
h
mess822_header h
Definition:
iftocc.c:18
line
stralloc line
Definition:
iftocc.c:25
match
int match
Definition:
iftocc.c:26
addrlist
stralloc addrlist
Definition:
iftocc.c:16
WHO
#define WHO
Definition:
iftocc.c:9
recipient
char * recipient
Definition:
iftocc.c:28
mess822.h
mess822_line
int mess822_line(mess822_header *, stralloc *)
Definition:
mess822_line.c:107
mess822_end
int mess822_end(mess822_header *)
Definition:
mess822_line.c:26
mess822_ok
int mess822_ok(stralloc *)
Definition:
mess822_ok.c:4
MESS822_HEADER
#define MESS822_HEADER
Definition:
mess822.h:48
mess822_begin
int mess822_begin(mess822_header *, mess822_action *)
Definition:
mess822_line.c:5
mess822_action
Definition:
mess822.h:12
mess822_header
Definition:
mess822.h:22
Generated on Mon Mar 3 2025 20:48:08 for mess822x by
1.9.6