commit e8c769ea76bb502ac4918c21dc513962edbd20ff
parent e75ebf75f666b47a4ce6ceef1145ae5ade655cbb
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date: Sun, 17 Oct 2004 15:34:53 +0000
ignore user-defined flags (for now).
also, split off the backslash from the "core" flag names.
Diffstat:
1 file changed, 16 insertions(+), 13 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
@@ -174,11 +174,11 @@ static int get_cmd_result( imap_store_t *ctx, struct imap_cmd *tcmd );
static const char *Flags[] = {
- "\\Draft",
- "\\Flagged",
- "\\Answered",
- "\\Seen",
- "\\Deleted",
+ "Draft",
+ "Flagged",
+ "Answered",
+ "Seen",
+ "Deleted",
};
#if HAVE_LIBSSL
@@ -730,16 +730,18 @@ parse_fetch( imap_t *imap, char *cmd ) /* move this down */
if (is_list( tmp )) {
for (flags = tmp->child; flags; flags = flags->next) {
if (is_atom( flags )) {
- if (!strcmp( "\\Recent", flags->val )) {
- status |= M_RECENT;
- goto flagok;
- }
- for (i = 0; i < as(Flags); i++)
- if (!strcmp( Flags[i], flags->val )) {
- mask |= 1 << i;
+ if (flags->val[0] == '\\') { /* ignore user-defined flags for now */
+ if (!strcmp( "Recent", flags->val + 1)) {
+ status |= M_RECENT;
goto flagok;
}
- fprintf( stderr, "IMAP warning: unknown flag %s\n", flags->val );
+ for (i = 0; i < as(Flags); i++)
+ if (!strcmp( Flags[i], flags->val + 1 )) {
+ mask |= 1 << i;
+ goto flagok;
+ }
+ fprintf( stderr, "IMAP warning: unknown system flag %s\n", flags->val );
+ }
flagok: ;
} else
fprintf( stderr, "IMAP error: unable to parse FLAGS list\n" );
@@ -1480,6 +1482,7 @@ imap_make_flags( int flags, char *buf )
for (i = d = 0; i < as(Flags); i++)
if (flags & (1 << i)) {
buf[d++] = ' ';
+ buf[d++] = '\\';
for (s = Flags[i]; *s; s++)
buf[d++] = *s;
}