diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/imap/IMAPFolder.cpp | 19 | ||||
-rw-r--r-- | src/net/imap/IMAPMessage.cpp | 4 | ||||
-rw-r--r-- | src/net/imap/IMAPUtils.cpp | 44 |
3 files changed, 17 insertions, 50 deletions
diff --git a/src/net/imap/IMAPFolder.cpp b/src/net/imap/IMAPFolder.cpp index 60133a29..3a38182e 100644 --- a/src/net/imap/IMAPFolder.cpp +++ b/src/net/imap/IMAPFolder.cpp @@ -596,10 +596,10 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes std::ostringstream cmd; cmd.imbue(std::locale::classic()); - cmd << "UID FETCH " << IMAPUtils::extractUIDFromGlobalUID(uids[0]); + cmd << "UID FETCH " << uids[0]; for (std::vector <message::uid>::size_type i = 1, n = uids.size() ; i < n ; ++i) - cmd << "," << IMAPUtils::extractUIDFromGlobalUID(uids[i]); + cmd << "," << uids[i]; cmd << " UID"; @@ -639,7 +639,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes // Get Process fetch response for this message const int msgNum = static_cast <int>(messageData->number()); - message::uid msgUID, msgFullUID; + message::uid msgUID; // Find UID in message attributes const std::vector <IMAPParser::msg_att_item*> atts = messageData->msg_att()->items(); @@ -649,9 +649,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes { if ((*it)->type() == IMAPParser::msg_att_item::UID) { - msgFullUID = IMAPUtils::makeGlobalUID(m_status->getUIDValidity(), (*it)->unique_id()->value()); msgUID = (*it)->unique_id()->value(); - break; } } @@ -659,7 +657,7 @@ std::vector <ref <message> > IMAPFolder::getMessagesByUID(const std::vector <mes if (!msgUID.empty()) { ref <IMAPFolder> thisFolder = thisRef().dynamicCast <IMAPFolder>(); - messages.push_back(vmime::create <IMAPMessage>(thisFolder, msgNum, msgFullUID)); + messages.push_back(vmime::create <IMAPMessage>(thisFolder, msgNum, msgUID)); } } @@ -676,6 +674,15 @@ int IMAPFolder::getMessageCount() } +vmime_uint32 IMAPFolder::getUIDValidity() const +{ + if (!isOpen()) + throw exceptions::illegal_state("Folder not open"); + + return m_status->getUIDValidity(); +} + + vmime_uint64 IMAPFolder::getHighestModSequence() const { if (!isOpen()) diff --git a/src/net/imap/IMAPMessage.cpp b/src/net/imap/IMAPMessage.cpp index 9ae264c0..96114e94 100644 --- a/src/net/imap/IMAPMessage.cpp +++ b/src/net/imap/IMAPMessage.cpp @@ -295,7 +295,7 @@ void IMAPMessage::extractImpl(ref <const messagePart> p, utility::outputStream& if (m_uid.empty()) command << "FETCH " << m_num << " BODY"; else - command << "UID FETCH " << IMAPUtils::extractUIDFromGlobalUID(m_uid) << " BODY"; + command << "UID FETCH " << m_uid << " BODY"; /* BODY[] header + body @@ -393,7 +393,7 @@ int IMAPMessage::processFetchResponse } case IMAPParser::msg_att_item::UID: { - m_uid = IMAPUtils::makeGlobalUID(folder->m_status->getUIDValidity(), (*it)->unique_id()->value()); + m_uid = (*it)->unique_id()->value(); break; } case IMAPParser::msg_att_item::MODSEQ: diff --git a/src/net/imap/IMAPUtils.cpp b/src/net/imap/IMAPUtils.cpp index 2aad06a1..dc583f84 100644 --- a/src/net/imap/IMAPUtils.cpp +++ b/src/net/imap/IMAPUtils.cpp @@ -554,10 +554,10 @@ const string IMAPUtils::listToSet(const std::vector <message::uid>& list) std::ostringstream res; res.imbue(std::locale::classic()); - res << extractUIDFromGlobalUID(list[0]); + res << list[0]; for (std::vector <message::uid>::size_type i = 1, n = list.size() ; i < n ; ++i) - res << "," << extractUIDFromGlobalUID(list[i]); + res << "," << list[i]; return res.str(); } @@ -756,46 +756,6 @@ void IMAPUtils::convertAddressList } -// static -vmime_uint32 IMAPUtils::extractUIDFromGlobalUID(const message::uid& uid) -{ - message::uid::size_type colonPos = uid.find(':'); - - if (colonPos == message::uid::npos) - { - std::istringstream iss(uid); - iss.imbue(std::locale::classic()); - - vmime_uint32 n = 0; - iss >> n; - - return n; - } - else - { - std::istringstream iss(uid.substr(colonPos + 1)); - iss.imbue(std::locale::classic()); - - vmime_uint32 n = 0; - iss >> n; - - return n; - } -} - - -// static -const message::uid IMAPUtils::makeGlobalUID(const vmime_uint32 UIDValidity, const vmime_uint32 messageUID) -{ - std::ostringstream oss; - oss.imbue(std::locale::classic()); - - oss << UIDValidity << ":" << messageUID; - - return message::uid(oss.str()); -} - - } // imap } // net } // vmime |