Mercurial > dovecot > original-hg > dovecot-1.2
diff src/plugins/mail-log/mail-log-plugin.c @ 5205:f33e5ce7a73c HEAD
Fixed deleted/undeleted logging.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 28 Feb 2007 23:00:39 +0200 |
parents | 24f4a959a24c |
children | 1fffd36401eb |
line wrap: on
line diff
--- a/src/plugins/mail-log/mail-log-plugin.c Wed Feb 28 22:19:42 2007 +0200 +++ b/src/plugins/mail-log/mail-log-plugin.c Wed Feb 28 23:00:39 2007 +0200 @@ -63,14 +63,29 @@ { struct mail_private *mail = (struct mail_private *)_mail; struct mail_log_mail *lmail = MAIL_LOG_CONTEXT(mail); + enum mail_flags old_flags, new_flags; + old_flags = mail_get_flags(_mail); if (lmail->super.update_flags(_mail, modify_type, flags) < 0) return -1; - if ((flags & MAIL_DELETED) == 0 && modify_type != MODIFY_REMOVE) + new_flags = old_flags; + switch (modify_type) { + case MODIFY_ADD: + new_flags |= flags; + break; + case MODIFY_REMOVE: + new_flags &= ~flags; + break; + case MODIFY_REPLACE: + new_flags = flags; + break; + } + if (((old_flags ^ new_flags) & MAIL_DELETED) == 0) return 0; - mail_log_action(_mail, "deleted"); + mail_log_action(_mail, (new_flags & MAIL_DELETED) != 0 ? + "deleted" : "undeleted"); return 0; }