aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/messaging/imap/IMAPMessage.cpp16
-rw-r--r--src/messaging/maildir/maildirMessage.cpp16
-rw-r--r--src/messaging/pop3/POP3Message.cpp6
3 files changed, 24 insertions, 14 deletions
diff --git a/src/messaging/imap/IMAPMessage.cpp b/src/messaging/imap/IMAPMessage.cpp
index a2220c68..03af67c6 100644
--- a/src/messaging/imap/IMAPMessage.cpp
+++ b/src/messaging/imap/IMAPMessage.cpp
@@ -367,23 +367,23 @@ const header& IMAPMessage::getHeader() const
void IMAPMessage::extract(utility::outputStream& os, utility::progressionListener* progress,
- const int start, const int length) const
+ const int start, const int length, const bool peek) const
{
if (!m_folder)
throw exceptions::folder_not_found();
- extract(NULL, os, progress, start, length, false);
+ extract(NULL, os, progress, start, length, false, peek);
}
void IMAPMessage::extractPart
(const part& p, utility::outputStream& os, utility::progressionListener* progress,
- const int start, const int length) const
+ const int start, const int length, const bool peek) const
{
if (!m_folder)
throw exceptions::folder_not_found();
- extract(&p, os, progress, start, length, false);
+ extract(&p, os, progress, start, length, false, peek);
}
@@ -395,7 +395,7 @@ void IMAPMessage::fetchPartHeader(part& p)
std::ostringstream oss;
utility::outputStreamAdapter ossAdapter(oss);
- extract(&p, ossAdapter, NULL, 0, -1, true);
+ extract(&p, ossAdapter, NULL, 0, -1, true, true);
static_cast <IMAPpart&>(p).getOrCreateHeader().parse(oss.str());
}
@@ -403,7 +403,7 @@ void IMAPMessage::fetchPartHeader(part& p)
void IMAPMessage::extract(const part* p, utility::outputStream& os,
utility::progressionListener* progress, const int start,
- const int length, const bool headerOnly) const
+ const int length, const bool headerOnly, const bool peek) const
{
IMAPMessage_literalHandler literalHandler(os, progress);
@@ -436,7 +436,9 @@ void IMAPMessage::extract(const part* p, utility::outputStream& os,
// Build the request text
std::ostringstream command;
- command << "FETCH " << m_num << " BODY[";
+ command << "FETCH " << m_num << " BODY";
+ if (peek) command << ".PEEK";
+ command << "[";
command << section.str();
if (headerOnly) command << ".MIME"; // "MIME" not "HEADER" for parts
command << "]";
diff --git a/src/messaging/maildir/maildirMessage.cpp b/src/messaging/maildir/maildirMessage.cpp
index 2815e980..9a56a472 100644
--- a/src/messaging/maildir/maildirMessage.cpp
+++ b/src/messaging/maildir/maildirMessage.cpp
@@ -309,23 +309,27 @@ void maildirMessage::setFlags(const int flags, const int mode)
void maildirMessage::extract(utility::outputStream& os,
- utility::progressionListener* progress, const int start, const int length) const
+ utility::progressionListener* progress, const int start,
+ const int length, const bool peek) const
{
- extractImpl(os, progress, 0, m_size, start, length);
+ extractImpl(os, progress, 0, m_size, start, length, peek);
}
void maildirMessage::extractPart(const part& p, utility::outputStream& os,
- utility::progressionListener* progress, const int start, const int length) const
+ utility::progressionListener* progress, const int start,
+ const int length, const bool peek) const
{
const maildirPart& mp = dynamic_cast <const maildirPart&>(p);
- extractImpl(os, progress, mp.getBodyParsedOffset(), mp.getBodyParsedLength(), start, length);
+ extractImpl(os, progress, mp.getBodyParsedOffset(), mp.getBodyParsedLength(),
+ start, length, peek);
}
void maildirMessage::extractImpl(utility::outputStream& os, utility::progressionListener* progress,
- const int start, const int length, const int partialStart, const int partialLength) const
+ const int start, const int length, const int partialStart, const int partialLength,
+ const bool peek) const
{
utility::fileSystemFactory* fsf = platformDependant::getHandler()->getFileSystemFactory();
@@ -363,6 +367,8 @@ void maildirMessage::extractImpl(utility::outputStream& os, utility::progression
if (progress)
progress->stop(total);
+
+ // TODO: mark as read unless 'peek' is set
}
diff --git a/src/messaging/pop3/POP3Message.cpp b/src/messaging/pop3/POP3Message.cpp
index 46d57ba9..e4833583 100644
--- a/src/messaging/pop3/POP3Message.cpp
+++ b/src/messaging/pop3/POP3Message.cpp
@@ -111,7 +111,8 @@ const header& POP3Message::getHeader() const
void POP3Message::extract(utility::outputStream& os,
- utility::progressionListener* progress, const int start, const int length) const
+ utility::progressionListener* progress, const int start,
+ const int length, const bool /* peek */) const
{
if (!m_folder)
throw exceptions::illegal_state("Folder closed");
@@ -148,7 +149,8 @@ void POP3Message::extract(utility::outputStream& os,
void POP3Message::extractPart
(const part& /* p */, utility::outputStream& /* os */,
utility::progressionListener* /* progress */,
- const int /* start */, const int /* length */) const
+ const int /* start */, const int /* length */,
+ const bool /* peek */) const
{
throw exceptions::operation_not_supported();
}