121 lines
4.5 KiB
C++
121 lines
4.5 KiB
C++
#include <pop/header.hpp>
|
|
#include <common/openfile.hpp>
|
|
#include <common/filemap.hpp>
|
|
#include <common/pview.hpp>
|
|
#include <common/block.hpp>
|
|
|
|
Header &Header::operator=(const Header &someHeader)
|
|
{
|
|
path(someHeader.path());
|
|
from(someHeader.from());
|
|
newsGroups(someHeader.newsGroups());
|
|
subject(someHeader.subject());
|
|
date(someHeader.date());
|
|
organization(someHeader.organization());
|
|
lines(someHeader.lines());
|
|
messageID(someHeader.messageID());
|
|
replyTo(someHeader.replyTo());
|
|
postingHost(someHeader.postingHost());
|
|
newsReader(someHeader.newsReader());
|
|
crossReference(someHeader.crossReference());
|
|
contentType(someHeader.contentType());
|
|
xMailer(someHeader.xMailer());
|
|
return *this;
|
|
}
|
|
|
|
Header &Header::operator=(Block<String> &headerLines)
|
|
{
|
|
UINT lineCount(headerLines.size());
|
|
for(int lineIndex=0;lineIndex<lineCount;lineIndex++)
|
|
{
|
|
String lineItem(headerLines[lineIndex].betweenString(' ',0));
|
|
String &headerLine=headerLines[lineIndex];
|
|
if(headerLine.isNull())continue;
|
|
if(isPath(headerLine))path(lineItem);
|
|
else if(isFrom(headerLine))from(lineItem);
|
|
else if(isNewsGroups(headerLine))newsGroups(lineItem);
|
|
else if(isSubject(headerLine))subject(lineItem);
|
|
else if(isDate(headerLine))date(lineItem);
|
|
else if(isOrganization(headerLine))organization(lineItem);
|
|
else if(isLines(headerLine))lines(lineItem);
|
|
else if(isMessageID(headerLine))messageID(lineItem);
|
|
else if(isReplyTo(headerLine))replyTo(lineItem);
|
|
else if(isNNTPPostingHost(headerLine))postingHost(lineItem);
|
|
else if(isNewsReader(headerLine))newsReader(lineItem);
|
|
else if(isCrossReference(headerLine))crossReference(lineItem);
|
|
else if(isContentType(headerLine))contentType(lineItem);
|
|
else if(isMailer(headerLine))xMailer(lineItem);
|
|
}
|
|
if(replyTo().isNull())replyTo(from());
|
|
return *this;
|
|
}
|
|
|
|
Header &Header::operator=(const String &pathFileName)
|
|
{
|
|
FileHandle headerFile(pathFileName,FileHandle::Read,FileHandle::ShareRead);
|
|
FileMap headerMap(headerFile);
|
|
PureViewOfFile headerView(headerMap);
|
|
String headerLine;
|
|
String lineItem;
|
|
|
|
if(!headerFile.isOkay())return *this;
|
|
while(headerView.getLine(headerLine))
|
|
{
|
|
if(headerLine.isNull()||!headerLine.length())break;
|
|
lineItem=(headerLine.betweenString(' ',0));
|
|
if(isPath(headerLine))path(lineItem);
|
|
else if(isFrom(headerLine))from(lineItem);
|
|
else if(isNewsGroups(headerLine))newsGroups(lineItem);
|
|
else if(isSubject(headerLine))subject(lineItem);
|
|
else if(isDate(headerLine))date(lineItem);
|
|
else if(isOrganization(headerLine))organization(lineItem);
|
|
else if(isLines(headerLine))lines(lineItem);
|
|
else if(isMessageID(headerLine))messageID(lineItem);
|
|
else if(isReplyTo(headerLine))replyTo(lineItem);
|
|
else if(isNNTPPostingHost(headerLine))postingHost(lineItem);
|
|
else if(isNewsReader(headerLine))newsReader(lineItem);
|
|
else if(isCrossReference(headerLine))crossReference(lineItem);
|
|
else if(isContentType(headerLine))contentType(lineItem);
|
|
else if(isMailer(headerLine))xMailer(lineItem);
|
|
}
|
|
if(replyTo().isNull())replyTo(from());
|
|
return *this;
|
|
}
|
|
|
|
SystemTime Header::systemTime(void)
|
|
{
|
|
SystemTime systemTime;
|
|
char *ptrString;
|
|
|
|
if(mDate.isNull())return systemTime;
|
|
String tmpDate(mDate.betweenString(',',0));
|
|
if(tmpDate.isNull())return systemTime;
|
|
ptrString=(LPSTR)tmpDate;
|
|
ptrString=::strtok(ptrString," ");
|
|
if(!ptrString)return systemTime;
|
|
systemTime.day(::atoi(ptrString));
|
|
ptrString=::strtok(0," ");
|
|
if(!ptrString)return systemTime;
|
|
if(!::strcmp(ptrString,"Jan"))systemTime.month(SystemTime::January);
|
|
else if(!::strcmp(ptrString,"Feb"))systemTime.month(SystemTime::February);
|
|
else if(!::strcmp(ptrString,"Mar"))systemTime.month(SystemTime::March);
|
|
else if(!::strcmp(ptrString,"Apr"))systemTime.month(SystemTime::April);
|
|
else if(!::strcmp(ptrString,"May"))systemTime.month(SystemTime::May);
|
|
else if(!::strcmp(ptrString,"Jun"))systemTime.month(SystemTime::June);
|
|
else if(!::strcmp(ptrString,"Jul"))systemTime.month(SystemTime::July);
|
|
else if(!::strcmp(ptrString,"Aug"))systemTime.month(SystemTime::August);
|
|
else if(!::strcmp(ptrString,"Sep"))systemTime.month(SystemTime::September);
|
|
else if(!::strcmp(ptrString,"Oct"))systemTime.month(SystemTime::October);
|
|
else if(!::strcmp(ptrString,"Nov"))systemTime.month(SystemTime::November);
|
|
else if(!::strcmp(ptrString,"Dec"))systemTime.month(SystemTime::December);
|
|
else systemTime.month(SystemTime::None);
|
|
ptrString=::strtok(0," ");
|
|
if(!ptrString)return systemTime;
|
|
systemTime.year(::atoi(ptrString));
|
|
systemTime.hour(0);
|
|
systemTime.minute(0);
|
|
systemTime.second(0);
|
|
systemTime.milliseconds(0);
|
|
return systemTime;
|
|
}
|