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;
 }