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