Initial
This commit is contained in:
120
pop/old/Header.cpp
Normal file
120
pop/old/Header.cpp
Normal file
@@ -0,0 +1,120 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user