comparison 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
comparison
equal deleted inserted replaced
5204:c0d7aeedea81 5205:f33e5ce7a73c
61 mail_log_mail_update_flags(struct mail *_mail, enum modify_type modify_type, 61 mail_log_mail_update_flags(struct mail *_mail, enum modify_type modify_type,
62 enum mail_flags flags) 62 enum mail_flags flags)
63 { 63 {
64 struct mail_private *mail = (struct mail_private *)_mail; 64 struct mail_private *mail = (struct mail_private *)_mail;
65 struct mail_log_mail *lmail = MAIL_LOG_CONTEXT(mail); 65 struct mail_log_mail *lmail = MAIL_LOG_CONTEXT(mail);
66 66 enum mail_flags old_flags, new_flags;
67
68 old_flags = mail_get_flags(_mail);
67 if (lmail->super.update_flags(_mail, modify_type, flags) < 0) 69 if (lmail->super.update_flags(_mail, modify_type, flags) < 0)
68 return -1; 70 return -1;
69 71
70 if ((flags & MAIL_DELETED) == 0 && modify_type != MODIFY_REMOVE) 72 new_flags = old_flags;
73 switch (modify_type) {
74 case MODIFY_ADD:
75 new_flags |= flags;
76 break;
77 case MODIFY_REMOVE:
78 new_flags &= ~flags;
79 break;
80 case MODIFY_REPLACE:
81 new_flags = flags;
82 break;
83 }
84 if (((old_flags ^ new_flags) & MAIL_DELETED) == 0)
71 return 0; 85 return 0;
72 86
73 mail_log_action(_mail, "deleted"); 87 mail_log_action(_mail, (new_flags & MAIL_DELETED) != 0 ?
88 "deleted" : "undeleted");
74 return 0; 89 return 0;
75 } 90 }
76 91
77 static struct mail * 92 static struct mail *
78 mail_log_mail_alloc(struct mailbox_transaction_context *t, 93 mail_log_mail_alloc(struct mailbox_transaction_context *t,