dovecot-2.0: Added imap_parse_system_flag().
dovecot at dovecot.org
dovecot at dovecot.org
Tue Jun 23 21:45:10 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/e4ba9799a1ac
changeset: 9512:e4ba9799a1ac
user: Timo Sirainen <tss at iki.fi>
date: Tue Jun 23 14:44:46 2009 -0400
description:
Added imap_parse_system_flag().
diffstat:
4 files changed, 57 insertions(+), 1 deletion(-)
src/lib-imap/Makefile.am | 7 ++++++-
src/lib-imap/imap-util.c | 18 ++++++++++++++++++
src/lib-imap/imap-util.h | 2 ++
src/lib-imap/test-imap-util.c | 31 +++++++++++++++++++++++++++++++
diffs (99 lines):
diff -r a81dfcf5a78d -r e4ba9799a1ac src/lib-imap/Makefile.am
--- a/src/lib-imap/Makefile.am Tue Jun 23 14:44:24 2009 -0400
+++ b/src/lib-imap/Makefile.am Tue Jun 23 14:44:46 2009 -0400
@@ -43,7 +43,8 @@ test_programs = \
test_programs = \
test-imap-match \
test-imap-parser \
- test-imap-utf7
+ test-imap-utf7 \
+ test-imap-util
noinst_PROGRAMS = $(test_programs)
@@ -63,6 +64,10 @@ test_imap_utf7_LDADD = imap-utf7.lo $(te
test_imap_utf7_LDADD = imap-utf7.lo $(test_libs)
test_imap_utf7_DEPENDENCIES = imap-utf7.lo $(test_libs)
+test_imap_util_SOURCES = test-imap-util.c
+test_imap_util_LDADD = imap-util.lo $(test_libs)
+test_imap_util_DEPENDENCIES = imap-util.lo $(test_libs)
+
check: check-am check-test
check-test: $(test_programs)
for bin in $(test_programs); do \
diff -r a81dfcf5a78d -r e4ba9799a1ac src/lib-imap/imap-util.c
--- a/src/lib-imap/imap-util.c Tue Jun 23 14:44:24 2009 -0400
+++ b/src/lib-imap/imap-util.c Tue Jun 23 14:44:46 2009 -0400
@@ -38,6 +38,24 @@ void imap_write_flags(string_t *dest, en
if (str_len(dest) != size)
str_truncate(dest, str_len(dest)-1);
+}
+
+enum mail_flags imap_parse_system_flag(const char *str)
+{
+ if (strcasecmp(str, "\\Answered") == 0)
+ return MAIL_ANSWERED;
+ else if (strcasecmp(str, "\\Flagged") == 0)
+ return MAIL_FLAGGED;
+ else if (strcasecmp(str, "\\Deleted") == 0)
+ return MAIL_DELETED;
+ else if (strcasecmp(str, "\\Seen") == 0)
+ return MAIL_SEEN;
+ else if (strcasecmp(str, "\\Draft") == 0)
+ return MAIL_DRAFT;
+ else if (strcasecmp(str, "\\Recent") == 0)
+ return MAIL_RECENT;
+ else
+ return 0;
}
void imap_write_seq_range(string_t *dest, const ARRAY_TYPE(seq_range) *array)
diff -r a81dfcf5a78d -r e4ba9799a1ac src/lib-imap/imap-util.h
--- a/src/lib-imap/imap-util.h Tue Jun 23 14:44:24 2009 -0400
+++ b/src/lib-imap/imap-util.h Tue Jun 23 14:44:46 2009 -0400
@@ -9,6 +9,8 @@ struct imap_arg;
/* Write flags as a space separated string. */
void imap_write_flags(string_t *dest, enum mail_flags flags,
const char *const *keywords);
+/* Parse system flag from a string, or return 0 if it's invalid. */
+enum mail_flags imap_parse_system_flag(const char *str);
/* Write sequence range as IMAP sequence-set */
void imap_write_seq_range(string_t *dest, const ARRAY_TYPE(seq_range) *array);
diff -r a81dfcf5a78d -r e4ba9799a1ac src/lib-imap/test-imap-util.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib-imap/test-imap-util.c Tue Jun 23 14:44:46 2009 -0400
@@ -0,0 +1,31 @@
+/* Copyright (c) 2009 Dovecot authors, see the included COPYING file */
+
+#include "lib.h"
+#include "mail-types.h"
+#include "imap-util.h"
+#include "test-common.h"
+
+static void test_imap_parse_system_flag(void)
+{
+ test_begin("imap_parse_system_flag");
+ test_assert(imap_parse_system_flag("\\aNswered") == MAIL_ANSWERED);
+ test_assert(imap_parse_system_flag("\\fLagged") == MAIL_FLAGGED);
+ test_assert(imap_parse_system_flag("\\dEleted") == MAIL_DELETED);
+ test_assert(imap_parse_system_flag("\\sEen") == MAIL_SEEN);
+ test_assert(imap_parse_system_flag("\\dRaft") == MAIL_DRAFT);
+ test_assert(imap_parse_system_flag("\\rEcent") == MAIL_RECENT);
+ test_assert(imap_parse_system_flag("answered") == 0);
+ test_assert(imap_parse_system_flag("\\broken") == 0);
+ test_assert(imap_parse_system_flag("\\") == 0);
+ test_assert(imap_parse_system_flag("") == 0);
+ test_end();
+}
+
+int main(void)
+{
+ static void (*test_functions[])(void) = {
+ test_imap_parse_system_flag,
+ NULL
+ };
+ return test_run(test_functions);
+}
More information about the dovecot-cvs
mailing list