Mercurial > dovecot > original-hg > dovecot-1.2
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, |