aboutsummaryrefslogtreecommitdiffstats
path: root/src/messaging/maildirUtils.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2004-12-04 17:48:02 +0000
committerVincent Richard <[email protected]>2004-12-04 17:48:02 +0000
commit31cd25b5b05a8d0ae41c16f504566efde43b3a68 (patch)
treedd839c0e097493882ac825e2e51d5ba5007ecde0 /src/messaging/maildirUtils.cpp
parentPrevent from renaming 'INBOX' folder in IMAP (illegal_operation exception). (diff)
downloadvmime-31cd25b5b05a8d0ae41c16f504566efde43b3a68.tar.gz
vmime-31cd25b5b05a8d0ae41c16f504566efde43b3a68.zip
Some update for 'maildir' protocol.
Diffstat (limited to 'src/messaging/maildirUtils.cpp')
-rw-r--r--src/messaging/maildirUtils.cpp38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/messaging/maildirUtils.cpp b/src/messaging/maildirUtils.cpp
index 2d294c0f..f6e16d8a 100644
--- a/src/messaging/maildirUtils.cpp
+++ b/src/messaging/maildirUtils.cpp
@@ -85,13 +85,23 @@ const bool maildirUtils::isSubfolderDirectory(const utility::file& file)
}
-/*
+const utility::file::path::component maildirUtils::extractId
+ (const utility::file::path::component& filename)
+{
+ string::size_type sep = filename.getBuffer().rfind(':');
+ if (sep == string::npos) return (filename);
+
+ return (utility::path::component
+ (string(filename.getBuffer().begin(), filename.getBuffer().begin() + sep)));
+}
+
+
const int maildirUtils::extractFlags(const utility::file::path::component& comp)
{
- string::size_type sep = comp.buffer().rfind(':');
+ string::size_type sep = comp.getBuffer().rfind(':');
if (sep == string::npos) return (0);
- const string flagsString(comp.buffer().begin() + sep + 1, comp.buffer().end());
+ const string flagsString(comp.getBuffer().begin() + sep + 1, comp.getBuffer().end());
const string::size_type count = flagsString.length();
int flags = 0;
@@ -102,6 +112,8 @@ const int maildirUtils::extractFlags(const utility::file::path::component& comp)
{
case 'S': case 's': flags |= message::FLAG_SEEN; break;
case 'R': case 'r': flags |= message::FLAG_REPLIED; break;
+
+ // TODO: more flags
}
}
@@ -109,6 +121,7 @@ const int maildirUtils::extractFlags(const utility::file::path::component& comp)
}
+/*
const utility::file::component maildirUtils::changeFlags
(const utility::file::component& comp, const int flags)
{
@@ -116,5 +129,24 @@ const utility::file::component maildirUtils::changeFlags
*/
+
+//
+// messageIdComparator
+//
+
+maildirUtils::messageIdComparator::messageIdComparator
+ (const utility::file::path::component& comp)
+ : m_comp(maildirUtils::extractId(comp))
+{
+}
+
+
+const bool maildirUtils::messageIdComparator::operator()
+ (const utility::file::path::component& other) const
+{
+ return (m_comp == maildirUtils::extractId(other));
+}
+
+
} // messaging
} // vmime