summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-09-10 17:08:11 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-09-10 23:04:35 +0200
commit82285ab5c9778cc16a6976f4036ec7188037c6b9 (patch)
treefcd25e7e97588e2c8075e38d0ce3357de64ffd58 /tools
parent4464e5dbca7cab6ec91d19914eddd934cb354aa7 (diff)
Merge INetMessageIStream into INetMIMEMessageStream
Change-Id: Ic3d9cd117b3f911a7cb1317fc9d1d2e9d8f1ff42
Diffstat (limited to 'tools')
-rw-r--r--tools/source/inet/inetstrm.cxx174
1 files changed, 79 insertions, 95 deletions
diff --git a/tools/source/inet/inetstrm.cxx b/tools/source/inet/inetstrm.cxx
index a3c76e754559..b984b3222b76 100644
--- a/tools/source/inet/inetstrm.cxx
+++ b/tools/source/inet/inetstrm.cxx
@@ -26,80 +26,7 @@
#include <ctype.h>
-// INetMessageIStream
-
-INetMessageIStream::INetMessageIStream(sal_uIntPtr nBufferSize)
- : pSourceMsg(NULL)
- , bHeaderGenerated(false)
- , nBufSiz(nBufferSize)
- , pMsgStrm(NULL)
- , pMsgBuffer(new SvMemoryStream)
- , pMsgRead(NULL)
- , pMsgWrite(NULL)
-{
- pMsgBuffer->SetStreamCharSet(RTL_TEXTENCODING_ASCII_US);
- pBuffer = new sal_Char[nBufSiz];
- pRead = pWrite = pBuffer;
-}
-
-INetMessageIStream::~INetMessageIStream()
-{
- delete [] pBuffer;
- delete pMsgBuffer;
- delete pMsgStrm;
-}
-
-int INetMessageIStream::Read(sal_Char* pData, sal_uIntPtr nSize)
-{
- if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR;
-
- sal_Char* pWBuf = pData;
- sal_Char* pWEnd = pData + nSize;
-
- while (pWBuf < pWEnd)
- {
- // Caller's buffer not yet filled.
- sal_uIntPtr n = pRead - pWrite;
- if (n > 0)
- {
- // Bytes still in buffer.
- sal_uIntPtr m = pWEnd - pWBuf;
- if (m < n) n = m;
- for (sal_uIntPtr i = 0; i < n; i++) *pWBuf++ = *pWrite++;
- }
- else
- {
- // Buffer empty. Reset to <Begin-of-Buffer>.
- pRead = pWrite = pBuffer;
-
- // Read next message line.
- int nRead = GetMsgLine(pBuffer, nBufSiz);
- if (nRead > 0)
- {
- // Set read pointer.
- pRead = pBuffer + nRead;
- }
- else
- {
- if (!bHeaderGenerated)
- {
- // Header generated. Insert empty line.
- bHeaderGenerated = true;
- *pRead++ = '\r';
- *pRead++ = '\n';
- }
- else
- {
- // Body generated.
- return (pWBuf - pData);
- }
- }
- }
- }
- return (pWBuf - pData);
-}
-
-int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
+int INetMIMEMessageStream::GetInnerMsgLine(sal_Char* pData, sal_uIntPtr nSize)
{
if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR;
@@ -158,25 +85,7 @@ int INetMessageIStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
return (pWBuf - pData);
}
-// INetMIMEMessageStream
-
-INetMIMEMessageStream::INetMIMEMessageStream(sal_uIntPtr nBufferSize)
- : INetMessageIStream(nBufferSize),
- eState (INETMSG_EOL_BEGIN),
- nChildIndex (0),
- pChildStrm (NULL),
- pMsgBuffer (NULL)
-{
-}
-
-INetMIMEMessageStream::~INetMIMEMessageStream()
-{
- delete pChildStrm;
- delete pMsgBuffer;
-}
-
-/// Message Generator
-int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
+int INetMIMEMessageStream::GetOuterMsgLine(sal_Char* pData, sal_uIntPtr nSize)
{
// Check for message container.
INetMIMEMessage* pMsg = GetSourceMessage();
@@ -223,7 +132,7 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
}
// Generate the message header.
- int nRead = INetMessageIStream::GetMsgLine(pData, nSize);
+ int nRead = GetInnerMsgLine(pData, nSize);
if (nRead <= 0)
{
// Reset state.
@@ -310,9 +219,84 @@ int INetMIMEMessageStream::GetMsgLine(sal_Char* pData, sal_uIntPtr nSize)
}
// No Encoding.
- return INetMessageIStream::GetMsgLine(pData, nSize);
+ return GetInnerMsgLine(pData, nSize);
+ }
+ }
+}
+
+INetMIMEMessageStream::INetMIMEMessageStream(sal_uIntPtr nBufferSize):
+ pSourceMsg(NULL),
+ bHeaderGenerated(false),
+ nBufSiz(nBufferSize),
+ pMsgStrm(NULL),
+ pMsgBuffer(new SvMemoryStream),
+ pMsgRead(NULL),
+ pMsgWrite(NULL),
+ eState(INETMSG_EOL_BEGIN),
+ nChildIndex(0),
+ pChildStrm(NULL)
+{
+ pMsgBuffer->SetStreamCharSet(RTL_TEXTENCODING_ASCII_US);
+ pBuffer = new sal_Char[nBufSiz];
+ pRead = pWrite = pBuffer;
+}
+
+INetMIMEMessageStream::~INetMIMEMessageStream()
+{
+ delete pChildStrm;
+ delete [] pBuffer;
+ delete pMsgBuffer;
+ delete pMsgStrm;
+}
+
+int INetMIMEMessageStream::Read(sal_Char* pData, sal_uIntPtr nSize)
+{
+ if (pSourceMsg == NULL) return INETSTREAM_STATUS_ERROR;
+
+ sal_Char* pWBuf = pData;
+ sal_Char* pWEnd = pData + nSize;
+
+ while (pWBuf < pWEnd)
+ {
+ // Caller's buffer not yet filled.
+ sal_uIntPtr n = pRead - pWrite;
+ if (n > 0)
+ {
+ // Bytes still in buffer.
+ sal_uIntPtr m = pWEnd - pWBuf;
+ if (m < n) n = m;
+ for (sal_uIntPtr i = 0; i < n; i++) *pWBuf++ = *pWrite++;
+ }
+ else
+ {
+ // Buffer empty. Reset to <Begin-of-Buffer>.
+ pRead = pWrite = pBuffer;
+
+ // Read next message line.
+ int nRead = GetOuterMsgLine(pBuffer, nBufSiz);
+ if (nRead > 0)
+ {
+ // Set read pointer.
+ pRead = pBuffer + nRead;
+ }
+ else
+ {
+ if (!bHeaderGenerated)
+ {
+ // Header generated. Insert empty line.
+ bHeaderGenerated = true;
+ *pRead++ = '\r';
+ *pRead++ = '\n';
+ }
+ else
+ {
+ // Body generated.
+ return (pWBuf - pData);
+ }
+ }
}
}
+ return (pWBuf - pData);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */