proboard/MSGFIND.CPP

74 lines
1.4 KiB
C++

#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;
}