diff options
| author | Vincent Richard <[email protected]> | 2004-12-21 10:04:19 +0100 |
|---|---|---|
| committer | Vincent Richard <[email protected]> | 2004-12-21 10:04:19 +0100 |
| commit | 706c270073daeb2b303ab34b7c5c9862da62b1ae (patch) | |
| tree | cc081dd5ac849d27ea825b6ddc958c76818ab24a /src/messaging | |
| parent | Added component::getChildComponents() function. (diff) | |
| download | vmime-706c270073daeb2b303ab34b7c5c9862da62b1ae.tar.gz vmime-706c270073daeb2b303ab34b7c5c9862da62b1ae.zip | |
Fixed ',2' in filename/flags + fixed file renaming when moving from 'new' to 'cur' + new functions random::getString() and maildirUtils::generateId().
Diffstat (limited to 'src/messaging')
| -rw-r--r-- | src/messaging/maildirFolder.cpp | 7 | ||||
| -rw-r--r-- | src/messaging/maildirUtils.cpp | 20 | ||||
| -rw-r--r-- | src/messaging/maildirUtils.hpp | 6 |
3 files changed, 30 insertions, 3 deletions
diff --git a/src/messaging/maildirFolder.cpp b/src/messaging/maildirFolder.cpp index 54d35989..21b97016 100644 --- a/src/messaging/maildirFolder.cpp +++ b/src/messaging/maildirFolder.cpp @@ -343,13 +343,16 @@ void maildirFolder::scanFolder() for (std::vector <utility::file::path::component>::const_iterator it = newMessageFilenames.begin() ; it != newMessageFilenames.end() ; ++it) { + const utility::file::path::component newFilename = + maildirUtils::buildFilename(maildirUtils::extractId(*it), 0); + // Move messages from 'new' to 'cur' utility::auto_ptr <utility::file> file = fsf->create(newDirPath / *it); - file->rename(curDirPath / *it); + file->rename(curDirPath / newFilename); // Append to message list messageInfos msgInfos; - msgInfos.path = *it; + msgInfos.path = newFilename; msgInfos.type = messageInfos::TYPE_CUR; m_messageInfos.push_back(msgInfos); diff --git a/src/messaging/maildirUtils.cpp b/src/messaging/maildirUtils.cpp index e620ce0a..aba91372 100644 --- a/src/messaging/maildirUtils.cpp +++ b/src/messaging/maildirUtils.cpp @@ -20,6 +20,8 @@ #include "maildirUtils.hpp" #include "maildirStore.hpp" +#include "../utility/random.hpp" + namespace vmime { namespace messaging { @@ -125,7 +127,9 @@ const int maildirUtils::extractFlags(const utility::file::path::component& comp) const utility::file::path::component maildirUtils::buildFlags(const int flags) { string str; - str.reserve(6); + str.reserve(8); + + str += "2,"; if (flags & message::FLAG_MARKED) str += "F"; if (flags & message::FLAG_PASSED) str += "P"; @@ -151,6 +155,20 @@ const utility::file::path::component maildirUtils::buildFilename } +const utility::file::path::component maildirUtils::generateId() +{ + std::ostringstream oss; + + oss << utility::random::getTime(); + oss << "."; + oss << utility::random::getProcess(); + oss << "."; + oss << utility::random::getString(6); + + return (utility::file::path::component(oss.str())); +} + + // // messageIdComparator diff --git a/src/messaging/maildirUtils.hpp b/src/messaging/maildirUtils.hpp index d65e5d3e..6d5f0628 100644 --- a/src/messaging/maildirUtils.hpp +++ b/src/messaging/maildirUtils.hpp @@ -128,6 +128,12 @@ public: */ static const utility::file::path::component buildFilename(const utility::file::path::component& id, const int flags); + /** Generate a new unique message identifier. + * + * @return unique message id + */ + static const utility::file::path::component generateId(); + private: static const vmime::word TMP_DIR; |
