61 szBuffer =
new char[nRequiredSize];
73 if (nRequiredSize > nBufferSize) {
78 if (szBuffer != NULL && nBufferSize > 0) {
79 memcpy(newp,szBuffer,nBufferSize);
83 nBufferSize = nNewSize;
109{
const char*
p = szBuffer;
110 const char* e = szBuffer + nBufLength;
211 bool operator()(
char ch) {
return(ch ==
' ' || ch ==
'\t' || ch ==
'\r' || ch ==
'\n'); }
216 *remove_if(szBuffer,szBuffer + strlen(szBuffer),
isswsp()) =
'\0';
221 nBufLength = remove_if(pBuffer,pBuffer+nBufLength,
isswsp()) - pBuffer;
226 sBuffer.erase(remove_if(sBuffer.begin(),sBuffer.end(),
isswsp()),sBuffer.end());
237 char* pSrc = pBuffer;
238 char* pDst = pBuffer;
239 char* pEnd = pBuffer + nBufLength;
241 while (pSrc != pEnd) {
246 }
while (pSrc != pEnd &&
isswsp()(*pSrc));
257 nBufLength = pDst - pBuffer;
262 string::iterator iSrc = sBuffer.begin();
263 string::iterator iDst = sBuffer.begin();
264 string::iterator iEnd = sBuffer.end();
266 while (iSrc != iEnd) {
271 }
while (iSrc != iEnd &&
isswsp()(*iSrc));
282 sBuffer.erase(iDst, iEnd);
295 string sTemp = sHeader;
299 string::size_type cpos = sTemp.find(
':');
301 if (cpos == string::npos) {
305 for (
unsigned i = 0; i < cpos; i++) {
306 if (sTemp[i] >=
'A' && sTemp[i] <=
'Z')
311 if (cpos + 1 < sTemp.length() && sTemp[cpos+1] ==
' ')
312 sTemp.erase(cpos + 1, 1);
315 if (cpos > 0 && sTemp[cpos - 1] ==
' ')
316 sTemp.erase(cpos - 1,1);
int ReAlloc(char *&szBuffer, int &nBufferLength, int nRequiredSize)
static string RelaxHeader(const string &sHeader)
static void CompressSWSP(char *pBuffer, int &nBufLength)
static void RemoveSWSP(char *szBuffer)
list< string > HeaderList
int Alloc(char *&szBuffer, int nRequiredSize)
virtual int ProcessHeaders(void)
virtual int ProcessBody(char *szBuffer, int nBufLength, bool bEOF)
void Free(char *szBuffer)
int Process(const char *szBuffer, int nBufLength, bool bEOF)
#define DKIM_OUT_OF_MEMORY
#define BUFFER_ALLOC_INCREMENT
void p(char *, char *, int, int, int)