From 8e79ce1919d9cf54f101a812e0fd70a33286b9f3 Mon Sep 17 00:00:00 2001 From: David Levine Date: Tue, 23 Oct 2012 19:16:56 -0500 Subject: [PATCH] Cyrus SASL 2.1.25 introduced the sasl_callback_ft prototype, which has an explicit void parameter list, according to best practice. So we need to cast to avoid compile warnings. And provide a sasl_callback_ft prototype for earlier versions. --- mts/smtp/smtp.c | 13 ++++++++++--- uip/popsbr.c | 11 +++++++++-- 2 files changed, 19 insertions(+), 5 deletions(-) mode change 100644 => 100755 mts/smtp/smtp.c mode change 100644 => 100755 uip/popsbr.c diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c old mode 100644 new mode 100755 index 404c463..b1d57dd --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -15,6 +15,13 @@ #ifdef CYRUS_SASL #include #include +# if SASL_VERSION_FULL < 0x020125 + /* Cyrus SASL 2.1.25 introduced the sasl_callback_ft prototype, + which has an explicit void parameter list, according to best + practice. So we need to cast to avoid compile warnings. + Provide this prototype for earlier versions. */ + typedef int (*sasl_callback_ft)(); +# endif /* SASL_VERSION_FULL < 0x020125 */ #include #include #include @@ -100,11 +107,11 @@ static int sm_get_user(void *, int, const char **, unsigned *); static int sm_get_pass(sasl_conn_t *, void *, int, sasl_secret_t **); static sasl_callback_t callbacks[] = { - { SASL_CB_USER, sm_get_user, NULL }, + { SASL_CB_USER, (sasl_callback_ft) sm_get_user, NULL }, #define SM_SASL_N_CB_USER 0 - { SASL_CB_PASS, sm_get_pass, NULL }, + { SASL_CB_PASS, (sasl_callback_ft) sm_get_pass, NULL }, #define SM_SASL_N_CB_PASS 1 - { SASL_CB_AUTHNAME, sm_get_user, NULL }, + { SASL_CB_AUTHNAME, (sasl_callback_ft) sm_get_user, NULL }, #define SM_SASL_N_CB_AUTHNAME 2 { SASL_CB_LIST_END, NULL, NULL }, }; diff --git a/uip/popsbr.c b/uip/popsbr.c old mode 100644 new mode 100755 index c566264..fb66a93 --- a/uip/popsbr.c +++ b/uip/popsbr.c @@ -12,6 +12,13 @@ #ifdef CYRUS_SASL # include # include +# if SASL_VERSION_FULL < 0x020125 + /* Cyrus SASL 2.1.25 introduced the sasl_callback_ft prototype, + which has an explicit void parameter list, according to best + practice. So we need to cast to avoid compile warnings. + Provide this prototype for earlier versions. */ + typedef int (*sasl_callback_ft)(); +# endif /* SASL_VERSION_FULL < 0x020125 */ #endif /* CYRUS_SASL */ #include @@ -43,9 +50,9 @@ struct pass_context { }; static sasl_callback_t callbacks[] = { - { SASL_CB_USER, sasl_get_user, NULL }, + { SASL_CB_USER, (sasl_callback_ft) sasl_get_user, NULL }, #define POP_SASL_CB_N_USER 0 - { SASL_CB_PASS, sasl_get_pass, NULL }, + { SASL_CB_PASS, (sasl_callback_ft) sasl_get_pass, NULL }, #define POP_SASL_CB_N_PASS 1 { SASL_CB_LOG, NULL, NULL }, { SASL_CB_LIST_END, NULL, NULL }, -- 1.7.10.4