Mercurial > dovecot > core-2.2
changeset 22340:06bf20f5e3ec
lib-storage: Add type checking for mailbox_list_notify_wait
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Tue, 27 Jun 2017 12:42:27 +0300 |
parents | d3dd6c5defe8 |
children | 508663aa112e |
files | src/imap/imap-notify.c src/lib-storage/mailbox-list-notify.c src/lib-storage/mailbox-list-notify.h |
diffstat | 3 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/imap-notify.c Thu Jul 06 11:24:35 2017 +0300 +++ b/src/imap/imap-notify.c Tue Jun 27 12:42:27 2017 +0300 @@ -348,10 +348,8 @@ client->notify_ctx->notifying = FALSE; } -static void notify_callback(void *context) +static void notify_callback(struct imap_notify_namespace *notify_ns) { - struct imap_notify_namespace *notify_ns = context; - o_stream_cork(notify_ns->ctx->client->output); imap_client_notify_ns(notify_ns); o_stream_uncork(notify_ns->ctx->client->output);
--- a/src/lib-storage/mailbox-list-notify.c Thu Jul 06 11:24:35 2017 +0300 +++ b/src/lib-storage/mailbox-list-notify.c Tue Jun 27 12:42:27 2017 +0300 @@ -28,6 +28,7 @@ return notify->list->v.notify_next(notify, rec_r); } +#undef mailbox_list_notify_wait void mailbox_list_notify_wait(struct mailbox_list_notify *notify, void (*callback)(void *context), void *context) {
--- a/src/lib-storage/mailbox-list-notify.h Thu Jul 06 11:24:35 2017 +0300 +++ b/src/lib-storage/mailbox-list-notify.h Tue Jun 27 12:42:27 2017 +0300 @@ -42,6 +42,8 @@ const char *old_vname; }; +typedef void mailbox_list_notify_callback_t(void *); + /* Monitor for specified changes in the mailbox list. Returns 0 if ok, -1 if notifications aren't supported. */ int mailbox_list_notify_init(struct mailbox_list *list, @@ -55,7 +57,10 @@ const struct mailbox_list_notify_rec **rec_r); /* Call the specified callback when something changes. */ void mailbox_list_notify_wait(struct mailbox_list_notify *notify, - void (*callback)(void *context), void *context); + mailbox_list_notify_callback_t *callback, void *context); +#define mailbox_list_notify_wait(notify, callback, context) \ + mailbox_list_notify_wait(notify + CALLBACK_TYPECHECK(callback, void (*)(typeof(context))), \ + (mailbox_list_notify_callback_t*)callback, context); /* Flush any delayed notifications now. */ void mailbox_list_notify_flush(struct mailbox_list_notify *notify);