-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMSGFIND.CPP
More file actions
73 lines (59 loc) · 1.42 KB
/
MSGFIND.CPP
File metadata and controls
73 lines (59 loc) · 1.42 KB
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define Use_MsgBase
#include "proboard.hpp"
bool
Message::readFirst(int method,int order,long first,char *data,int area)
{
if(area)
{
if(!setArea(area)) return FALSE;
}
if(order<0)
{
lastIndex = first + 1;
}
else
{
lastIndex = (first > 0) ? (first - 1) : 0;
}
return readNext(method,order,data);
}
bool
Message::readNext(int method,int order,char *data)
{
for(lastIndex += order ; lastIndex ; lastIndex+=order)
{
lastIndex = msgBase()->readMsg(*this,(order<0) ? (-lastIndex) : (lastIndex));
if(lastIndex < 0) break;
switch(method)
{
case READMSG_ALL:
{
return TRUE;
}
case READMSG_SEL:
{
switch(data[0])
{
case 'F': if(strstrl(from,&data[1])) return TRUE;
break;
case 'T': if(strstrl(to,&data[1])) return TRUE;
break;
case 'S': if(strstrl(subj,&data[1])) return TRUE;
break;
case 'E': if(strstrl(from,&data[1]) || strstrl(to,&data[1])) return TRUE;
break;
}
}
break;
}
}
return FALSE;
}
bool
Message::readPrev(int method,int order,char *data)
{
long prevlast=lastIndex;
bool x = readNext(method,-order,data);
if(!x) lastIndex = prevlast;
return x;
}