Sun Jul 29 08:41:18 2018 UTC ()
Apply patch from joerg@ to build with clang (by removing anonymous inner
functions). Bump PKGREVISION.


(schmonz)
diff -r1.36 -r1.37 pkgsrc/mail/spamdyke/Makefile
diff -r1.32 -r1.33 pkgsrc/mail/spamdyke/distinfo
diff -r0 -r1.1 pkgsrc/mail/spamdyke/patches/patch-configuration.c
diff -r0 -r1.1 pkgsrc/mail/spamdyke/patches/patch-configure
diff -r0 -r1.1 pkgsrc/mail/spamdyke/patches/patch-configure.ac
diff -r1.1 -r1.2 pkgsrc/mail/spamdyke/patches/patch-spamdyke.h

cvs diff -r1.36 -r1.37 pkgsrc/mail/spamdyke/Makefile (expand / switch to unified diff)

--- pkgsrc/mail/spamdyke/Makefile 2017/07/09 16:16:32 1.36
+++ pkgsrc/mail/spamdyke/Makefile 2018/07/29 08:41:18 1.37
@@ -1,37 +1,34 @@ @@ -1,37 +1,34 @@
1# $NetBSD: Makefile,v 1.36 2017/07/09 16:16:32 schmonz Exp $ 1# $NetBSD: Makefile,v 1.37 2018/07/29 08:41:18 schmonz Exp $
2# 2#
3 3
4DISTNAME= spamdyke-5.0.1 4DISTNAME= spamdyke-5.0.1
5PKGREVISION= 1 5PKGREVISION= 2
6CATEGORIES= mail 6CATEGORIES= mail
7MASTER_SITES= ${HOMEPAGE}releases/ 7MASTER_SITES= ${HOMEPAGE}releases/
8EXTRACT_SUFX= .tgz 8EXTRACT_SUFX= .tgz
9 9
10MAINTAINER= schmonz@NetBSD.org 10MAINTAINER= schmonz@NetBSD.org
11HOMEPAGE= http://www.spamdyke.org/ 11HOMEPAGE= http://www.spamdyke.org/
12COMMENT= Filters incoming SMTP connections to qmail 12COMMENT= Filters incoming SMTP connections to qmail
13LICENSE= gnu-gpl-v2 13LICENSE= gnu-gpl-v2
14 14
15WRKSRC= ${WRKDIR}/${PKGNAME_NOREV}/${PKGBASE} 15WRKSRC= ${WRKDIR}/${PKGNAME_NOREV}/${PKGBASE}
16 16
17GNU_CONFIGURE= yes 17GNU_CONFIGURE= yes
18BUILD_TARGET= ${PKGBASE} 18BUILD_TARGET= ${PKGBASE}
19MAKE_FLAGS+= CFLAGS=${CFLAGS:Q} 19MAKE_FLAGS+= CFLAGS=${CFLAGS:Q}
20MAKE_FLAGS+= LDFLAGS=${LDFLAGS:Q} 20MAKE_FLAGS+= LDFLAGS=${LDFLAGS:Q}
21 21
22# anonymous inner functions 
23ONLY_FOR_COMPILER= gcc 
24 
25SUBST_CLASSES+= paths 22SUBST_CLASSES+= paths
26SUBST_FILES.paths= spamdyke.h 23SUBST_FILES.paths= spamdyke.h
27SUBST_SED.paths= -e 's,@PREFIX@,${PREFIX:Q},g' 24SUBST_SED.paths= -e 's,@PREFIX@,${PREFIX:Q},g'
28SUBST_SED.paths+= -e 's,@QMAILDIR@,${QMAILDIR:Q},g' 25SUBST_SED.paths+= -e 's,@QMAILDIR@,${QMAILDIR:Q},g'
29SUBST_STAGE.paths= do-configure 26SUBST_STAGE.paths= do-configure
30 27
31BUILD_DEFS+= QMAILDIR 28BUILD_DEFS+= QMAILDIR
32 29
33EGDIR= ${PREFIX}/share/examples/${PKGBASE} 30EGDIR= ${PREFIX}/share/examples/${PKGBASE}
34CONF_FILES+= ${EGDIR}/spamdyke.conf.example ${PKG_SYSCONFDIR}/spamdyke.conf 31CONF_FILES+= ${EGDIR}/spamdyke.conf.example ${PKG_SYSCONFDIR}/spamdyke.conf
35 32
36INSTALLATION_DIRS= bin share/doc/${PKGBASE} share/examples/${PKGBASE} 33INSTALLATION_DIRS= bin share/doc/${PKGBASE} share/examples/${PKGBASE}
37 34

cvs diff -r1.32 -r1.33 pkgsrc/mail/spamdyke/distinfo (expand / switch to unified diff)

--- pkgsrc/mail/spamdyke/distinfo 2017/07/09 16:16:32 1.32
+++ pkgsrc/mail/spamdyke/distinfo 2018/07/29 08:41:18 1.33
@@ -1,8 +1,11 @@ @@ -1,8 +1,11 @@
1$NetBSD: distinfo,v 1.32 2017/07/09 16:16:32 schmonz Exp $ 1$NetBSD: distinfo,v 1.33 2018/07/29 08:41:18 schmonz Exp $
2 2
3SHA1 (spamdyke-5.0.1.tgz) = 4de76158a98b3ee33e7002160446ae36de7c96d2 3SHA1 (spamdyke-5.0.1.tgz) = 4de76158a98b3ee33e7002160446ae36de7c96d2
4RMD160 (spamdyke-5.0.1.tgz) = 7237108ebf0ff2a5c02b7e305985a11e93720f8d 4RMD160 (spamdyke-5.0.1.tgz) = 7237108ebf0ff2a5c02b7e305985a11e93720f8d
5SHA512 (spamdyke-5.0.1.tgz) = a022c8a8d4a8d74f5249f8e2d901d3de423ee853bbaffaf7e86cece1d19880d9039135892ef6ccb8a2a0fb11532c487402dc97a8dd6d89c9de431752c55f6eb9 5SHA512 (spamdyke-5.0.1.tgz) = a022c8a8d4a8d74f5249f8e2d901d3de423ee853bbaffaf7e86cece1d19880d9039135892ef6ccb8a2a0fb11532c487402dc97a8dd6d89c9de431752c55f6eb9
6Size (spamdyke-5.0.1.tgz) = 383720 bytes 6Size (spamdyke-5.0.1.tgz) = 383720 bytes
 7SHA1 (patch-configuration.c) = 81548b8a7cc557446d3ecfca3546a129b04a2173
 8SHA1 (patch-configure) = 0ff7ecd6b73445664243918001368a73186159b3
 9SHA1 (patch-configure.ac) = 5b932db1992c268e80fced15d032d369d1dc40ce
7SHA1 (patch-md5.c) = f61cd888b6739c014a6de72d55589672d65c25cc 10SHA1 (patch-md5.c) = f61cd888b6739c014a6de72d55589672d65c25cc
8SHA1 (patch-spamdyke.h) = fe76ef41ba4e1ce231d578368642a18fbca12050 11SHA1 (patch-spamdyke.h) = 689d4774d78b60a4dd2fbb62a99b218aca9b500b

File Added: pkgsrc/mail/spamdyke/patches/patch-configuration.c
$NetBSD: patch-configuration.c,v 1.1 2018/07/29 08:41:18 schmonz Exp $

Remove anonymous inner functions to build with clang.

--- configuration.c.orig	2018-07-08 20:20:10.283510612 +0000
+++ configuration.c
@@ -359,6 +359,140 @@ int copy_base_options(struct filter_sett
  * Return value:
  *   exit value for main()
  */
+CONFIG_ACTION_PREDEF(smtp_auth_level, if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_LEVEL_MASK) != SMTP_AUTH_LEVEL_VALUE_NONE) && (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM)) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM)
+CONFIG_ACTION_PREDEF(smtp_auth_verification, if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_SET_MASK) == SMTP_AUTH_SET_VALUE_UNSET) && (current_settings->current_options->smtp_auth_command != NULL) && (current_settings->current_options->smtp_auth_command[0] != NULL)) { current_settings->current_options->smtp_auth_level = SMTP_AUTH_LEVEL_VALUE_ON_DEMAND | SMTP_AUTH_SET_VALUE_SET; if (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM; })
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_sender)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_sender_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_sender)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_sender_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(smtp_auth_command)
+CONFIG_ACCESSOR_INTEGER_PREDEF(smtp_auth_level)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_certificate_file)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_cipher_list)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_dhparams_file)
+CONFIG_ACCESSOR_INTEGER_PREDEF(tls_level)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_privatekey_file)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_privatekey_password)
+CONFIG_ACCESSOR_STRING_PREDEF(tls_privatekey_password_file)
+CONFIG_ACCESSOR_STRING_PREDEF(run_user)
+CONFIG_ACCESSOR_INTEGER_PREDEF(relay_level)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(rhsbl_fqdn)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(rhsbl_fqdn_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(rhswl_fqdn)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(rhswl_fqdn_file)
+CONFIG_ACCESSOR_STRING_PREDEF(local_server_name)
+CONFIG_ACCESSOR_STRING_PREDEF(local_server_name_command)
+CONFIG_ACCESSOR_STRING_PREDEF(local_server_name_file)
+CONFIG_ACCESSOR_INTEGER_PREDEF(timeout_command)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_ip)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_ip_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_rdns_keyword)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_rdns_keyword_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_rdns_keyword)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_rdns_keyword_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(relay_ip)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(relay_ip_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_ip)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_ip_file)
+CONFIG_ACCESSOR_INTEGER_PREDEF(log_level)
+CONFIG_ACCESSOR_INTEGER_PREDEF(check_earlytalker)
+CONFIG_ACCESSOR_INTEGER_PREDEF(configuration_dir_search)
+CONFIG_ACCESSOR_INTEGER_PREDEF(filter_level)
+CONFIG_ACCESSOR_INTEGER_PREDEF(graylist_level)
+CONFIG_ACCESSOR_INTEGER_PREDEF(graylist_max_secs)
+CONFIG_ACCESSOR_INTEGER_PREDEF(graylist_min_secs)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_attempts_primary)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_attempts_total)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_level)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_query_type_a)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_query_type_mx)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_query_type_ptr)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_query_type_rbl)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_spoof)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_tcp)
+CONFIG_ACCESSOR_INTEGER_PREDEF(nihdns_timeout_total_secs_parameter)
+CONFIG_ACCESSOR_INTEGER_PREDEF(timeout_connection)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(config_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(configuration_dir)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(dnsrbl_fqdn)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(dnsrbl_fqdn_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(dnsrwl_fqdn)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(dnsrwl_fqdn_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_dir)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_exception_ip)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_exception_ip_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_exception_rdns)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_exception_rdns_dir)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(graylist_exception_rdns_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(nihdns_primary_server_list)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(nihdns_resolv_conf)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(nihdns_secondary_server_list)
+CONFIG_ACCESSOR_STRING_PREDEF(log_dir)
+CONFIG_ACCESSOR_STRING_PREDEF(test_smtp_auth_password)
+CONFIG_ACCESSOR_STRING_PREDEF(test_smtp_auth_username)
+CONFIG_SET_ACTION_PREDEF(loglevel, if (current_settings->current_options->log_level == 0) current_settings->current_options->log_level = LOG_LEVEL_ERROR)
+CONFIG_SET_ACTION_PREDEF(relay_level_unset, if (current_settings->current_options->relay_level == RELAY_LEVEL_UNSET) current_settings->current_options->relay_level = RELAY_LEVEL_NORMAL;)
+CONFIG_SET_ACTION_PREDEF(strlen_policy_location, current_settings->current_options->strlen_policy_location = (current_settings->current_options->policy_location != NULL) ? strlen(current_settings->current_options->policy_location) : 0)
+CONFIG_SET_ACTION_PREDEF(strlen_tls_privatekey_password, current_settings->current_options->strlen_tls_privatekey_password = (current_settings->current_options->tls_privatekey_password != NULL) ? strlen(current_settings->current_options->tls_privatekey_password) : 0)
+CONFIG_SET_ACTION_PREDEF(usage_brief, usage(current_settings, USAGE_LEVEL_BRIEF, NULL))
+CONFIG_SET_ACTION_PREDEF(usage_long, usage(current_settings, USAGE_LEVEL_LONG, NULL))
+CONFIG_SET_ACTION_PREDEF(usage_short, usage(current_settings, USAGE_LEVEL_SHORT, NULL))
+CONFIG_ACCESSOR_INTEGER_PREDEF(log_target)
+CONFIG_ACCESSOR_INTEGER_PREDEF(max_rcpt_to)
+CONFIG_ACCESSOR_STRING_PREDEF(policy_location)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(qmail_morercpthosts_cdb)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(qmail_rcpthosts_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_rdns_dir)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_rdns)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_rdns_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(relay_rdns)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(relay_rdns_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_rdns_dir)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_rdns)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_rdns_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_recipient)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(blacklist_recipient_file)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_recipient)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(whitelist_recipient_file)
+CONFIG_ACCESSOR_INTEGER_PREDEF(check_rdns_exist)
+CONFIG_ACCESSOR_INTEGER_PREDEF(check_ip_in_rdns_cc)
+CONFIG_ACCESSOR_INTEGER_PREDEF(reject_recipient)
+CONFIG_ACCESSOR_INTEGER_PREDEF(reject_sender)
+CONFIG_ACCESSOR_INTEGER_PREDEF(check_rdns_resolve)
+CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(recipient_validation_command)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SMTP_AUTH_FAILURE)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SMTP_AUTH_UNKNOWN)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RBL)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_EARLYTALKER)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RDNS_MISSING)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_GRAYLISTED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_HEADER_BLACKLISTED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_BLACKLIST_IP)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_IP_IN_NAME_CC)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_IP_IN_NAME)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RCPT_TO_LOCAL)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RCPT_TO)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_BLACKLIST_NAME)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RECIPIENT_BLACKLISTED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_INVALID_RECIPIENT)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_IDENTICAL_FROM_TO)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_UNAVAILABLE_RECIPIENT)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_UNCONDITIONAL)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RELAYING_DENIED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RHSBL)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SENDER_NOT_AUTH)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SENDER_BLACKLISTED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SENDER_NO_MX)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_SENDER_NOT_LOCAL)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_AUTH_REQUIRED)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_TIMEOUT)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, FAILURE_TLS)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_RDNS_RESOLVE)
+CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(rejection_text, REJECTION_ZERO_RECIPIENTS)
+
+static char ***predef_access_string_array_blacklist_header(struct option_set *current_options, int current_options_only) { return(current_options_only ? NULL : &current_options->container->blacklist_header); }
+static char ***predef_access_string_array_blacklist_header_file(struct option_set *current_options, int current_options_only) { return(current_options_only ? NULL : &current_options->container->blacklist_header_file); }
+
 int prepare_settings(int argc, char *argv[], char *envp[], int (*main_function)(struct filter_settings *, int, char **))
   {
   int return_value;
@@ -706,7 +840,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_CONFIG_TEST,
       FILTER_GRACE_NONE,
       NULL,
-      CONFIG_SET_ACTION(if (current_settings->current_options->log_level == 0) current_settings->current_options->log_level = LOG_LEVEL_ERROR),
+      CONFIG_SET_ACTION(loglevel, if (current_settings->current_options->log_level == 0) current_settings->current_options->log_level = LOG_LEVEL_ERROR),
       NULL,
       NULL,
       "Tests the configuration as much as possible and reports any errors that can be discovered without actually accepting an incoming message."
@@ -1436,7 +1570,7 @@ int prepare_settings(int argc, char *arg
       { "header-blacklist-entry", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string_array = ({ char ***access_string_array(struct option_set *current_options, int current_options_only) { return(current_options_only ? NULL : &current_options->container->blacklist_header); } &access_string_array; }) },
+      { .get_string_array = predef_access_string_array_blacklist_header },
       { .max_strlen = 0 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -1453,7 +1587,7 @@ int prepare_settings(int argc, char *arg
       { "header-blacklist-file", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string_array = ({ char ***access_string_array(struct option_set *current_options, int current_options_only) { return(current_options_only ? NULL : &current_options->container->blacklist_header_file); } &access_string_array; }) },
+      { .get_string_array = predef_access_string_array_blacklist_header_file },
       { .max_strlen = 0 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -1475,7 +1609,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_ERROR,
       FILTER_GRACE_NONE,
       NULL,
-      CONFIG_SET_ACTION(usage(current_settings, USAGE_LEVEL_BRIEF, NULL)),
+      CONFIG_SET_ACTION(usage_brief, usage(current_settings, USAGE_LEVEL_BRIEF, NULL)),
       NULL,
       NULL,
       "Displays a (shorter) option summary and exits."
@@ -1802,7 +1936,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_ERROR,
       FILTER_GRACE_NONE,
       NULL,
-      CONFIG_SET_ACTION(usage(current_settings, USAGE_LEVEL_LONG, NULL)),
+      CONFIG_SET_ACTION(usage_long, usage(current_settings, USAGE_LEVEL_LONG, NULL)),
       NULL,
       NULL,
       "Displays this help screen and exits."
@@ -1819,7 +1953,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
       NULL,
-      CONFIG_SET_ACTION(current_settings->current_options->strlen_policy_location = (current_settings->current_options->policy_location != NULL) ? strlen(current_settings->current_options->policy_location) : 0),
+      CONFIG_SET_ACTION(strlen_policy_location, current_settings->current_options->strlen_policy_location = (current_settings->current_options->policy_location != NULL) ? strlen(current_settings->current_options->policy_location) : 0),
       NULL,
       "URL",
       "Append URL to the rejection message to explain why the rejection occurred. NOTE: most servers hide rejection messages from their users and most users don't read bounce messages."
@@ -1837,7 +1971,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
       &config_test_cdb,
-      CONFIG_SET_ACTION(if (current_settings->current_options->relay_level == RELAY_LEVEL_UNSET) current_settings->current_options->relay_level = RELAY_LEVEL_NORMAL;),
+      CONFIG_SET_ACTION(relay_level_unset, if (current_settings->current_options->relay_level == RELAY_LEVEL_UNSET) current_settings->current_options->relay_level = RELAY_LEVEL_NORMAL;),
       NULL,
       "CDB",
       "Search CDB to determine if mail for a domain is accepted here. NOTE: In order for recipient validation to work correctly, spamdyke needs to use the same input"
@@ -1855,7 +1989,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
       &config_test_qmail_option,
-      CONFIG_SET_ACTION(if (current_settings->current_options->relay_level == RELAY_LEVEL_UNSET) current_settings->current_options->relay_level = RELAY_LEVEL_NORMAL;),
+      CONFIG_SET_ACTION(relay_level_unset, if (current_settings->current_options->relay_level == RELAY_LEVEL_UNSET) current_settings->current_options->relay_level = RELAY_LEVEL_NORMAL;),
       NULL,
       "FILE",
       "Search FILE to determine if mail for a domain is accepted here. NOTE: In order for recipient validation to work correctly, spamdyke needs to use the same input"
@@ -2196,7 +2330,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-auth-failure", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SMTP_AUTH_FAILURE]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SMTP_AUTH_FAILURE) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2213,7 +2347,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-auth-unknown", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SMTP_AUTH_UNKNOWN]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SMTP_AUTH_UNKNOWN) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2231,7 +2365,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-dns-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RBL]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RBL) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2249,7 +2383,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-earlytalker", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_EARLYTALKER]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_EARLYTALKER) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2266,7 +2400,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-empty-rdns", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RDNS_MISSING]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RDNS_MISSING) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2283,7 +2417,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-graylist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_GRAYLISTED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_GRAYLISTED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2305,7 +2439,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-header-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_HEADER_BLACKLISTED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_HEADER_BLACKLISTED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2322,7 +2456,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-ip-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_BLACKLIST_IP]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_BLACKLIST_IP) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2339,7 +2473,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-ip-in-cc-rdns", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_IP_IN_NAME_CC]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_IP_IN_NAME_CC) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2356,7 +2490,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-ip-in-rdns-keyword-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_IP_IN_NAME]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_IP_IN_NAME) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2373,7 +2507,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-local-recipient", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RCPT_TO_LOCAL]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RCPT_TO_LOCAL) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2390,7 +2524,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-max-recipients", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RCPT_TO]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RCPT_TO) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2407,7 +2541,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-rdns-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_BLACKLIST_NAME]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_BLACKLIST_NAME) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2424,7 +2558,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-recipient-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RECIPIENT_BLACKLISTED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RECIPIENT_BLACKLISTED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2441,7 +2575,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-recipient-invalid", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_INVALID_RECIPIENT]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_INVALID_RECIPIENT) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2458,7 +2592,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-recipient-same-as-sender", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_IDENTICAL_FROM_TO]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_IDENTICAL_FROM_TO) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2475,7 +2609,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-recipient-unavailable", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_UNAVAILABLE_RECIPIENT]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_UNAVAILABLE_RECIPIENT) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2492,7 +2626,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-reject-all", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_UNCONDITIONAL]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_UNCONDITIONAL) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2509,7 +2643,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-relaying-denied", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RELAYING_DENIED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RELAYING_DENIED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2526,7 +2660,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-rhs-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RHSBL]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RHSBL) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2544,7 +2678,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-sender-authentication-mismatch", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SENDER_NOT_AUTH]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SENDER_NOT_AUTH) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2561,7 +2695,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-sender-blacklist", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SENDER_BLACKLISTED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SENDER_BLACKLISTED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2578,7 +2712,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-sender-no-mx", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SENDER_NO_MX]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SENDER_NO_MX) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2595,7 +2729,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-sender-not-local", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_SENDER_NOT_LOCAL]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_SENDER_NOT_LOCAL) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2612,7 +2746,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-smtp-auth-required", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_AUTH_REQUIRED]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_AUTH_REQUIRED) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2629,7 +2763,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-timeout", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_TIMEOUT]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_TIMEOUT) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2646,7 +2780,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-tls-failure", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[FAILURE_TLS]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, FAILURE_TLS) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2663,7 +2797,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-unresolvable-rdns", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_RDNS_RESOLVE]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_RDNS_RESOLVE) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2680,7 +2814,7 @@ int prepare_settings(int argc, char *arg
       { "rejection-text-zero-recipients", required_argument, NULL, -1 },
       { .string_value = NULL },
       { .string_value = NULL },
-      { .get_string = CONFIG_ACCESSOR_STRING(rejection_text[REJECTION_ZERO_RECIPIENTS]) },
+      { .get_string = CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(rejection_text, REJECTION_ZERO_RECIPIENTS) },
       { .max_strlen = 100 },
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
@@ -2888,7 +3022,7 @@ int prepare_settings(int argc, char *arg
       FILTER_GRACE_NONE,
       &config_test_noop,
       NULL,
-      CONFIG_ACTION(if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_SET_MASK) == SMTP_AUTH_SET_VALUE_UNSET) && (current_settings->current_options->smtp_auth_command != NULL) && (current_settings->current_options->smtp_auth_command[0] != NULL)) { current_settings->current_options->smtp_auth_level = SMTP_AUTH_LEVEL_VALUE_ON_DEMAND | SMTP_AUTH_SET_VALUE_SET; if (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM; }),
+      CONFIG_ACTION(smtp_auth_verification, if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_SET_MASK) == SMTP_AUTH_SET_VALUE_UNSET) && (current_settings->current_options->smtp_auth_command != NULL) && (current_settings->current_options->smtp_auth_command[0] != NULL)) { current_settings->current_options->smtp_auth_level = SMTP_AUTH_LEVEL_VALUE_ON_DEMAND | SMTP_AUTH_SET_VALUE_SET; if (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM; }),
       "COMMAND",
       "Perform SMTP AUTH verification using COMMAND. spamdyke will only advertise cleartext authentication methods (unless qmail has been patched to advertise encrypted methods)."
       " If the authentication is valid, all filters will be bypassed. Most often, COMMAND is \"/bin/checkpassword /bin/true\". If \"smtp-auth-level\" is not given, \"smtp-auth-command\""
@@ -2912,7 +3046,7 @@ int prepare_settings(int argc, char *arg
       FILTER_GRACE_NONE,
       &config_test_smtpauth,
       NULL,
-      CONFIG_ACTION(if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_LEVEL_MASK) != SMTP_AUTH_LEVEL_VALUE_NONE) && (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM)) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM),
+      CONFIG_ACTION(smtp_auth_level, if (((current_settings->current_options->smtp_auth_level & SMTP_AUTH_LEVEL_MASK) != SMTP_AUTH_LEVEL_VALUE_NONE) && (current_settings->current_options->filter_grace < FILTER_GRACE_AFTER_FROM)) current_settings->current_options->filter_grace = FILTER_GRACE_AFTER_FROM),
       "LEVEL",
       "Support SMTP AUTH at LEVEL. LEVEL must be one of: none = do not allow or support SMTP AUTH, even if qmail supports it; observe"
       " = observe and honor authentication with qmail but qmail must offer it; ondemand = observe and honor authentication with qmail or offer and process"
@@ -3030,7 +3164,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_UNDECIDED,
       FILTER_GRACE_NONE,
       &config_test_tls_password,
-      CONFIG_SET_ACTION(current_settings->current_options->strlen_tls_privatekey_password = (current_settings->current_options->tls_privatekey_password != NULL) ? strlen(current_settings->current_options->tls_privatekey_password) : 0),
+      CONFIG_SET_ACTION(strlen_tls_privatekey_password, current_settings->current_options->strlen_tls_privatekey_password = (current_settings->current_options->tls_privatekey_password != NULL) ? strlen(current_settings->current_options->tls_privatekey_password) : 0),
       NULL,
       "PASSWORD",
       "Use PASSWORD to decrypt the SSL private key (from \"tls-certificate-file\" or \"tls-privatekey-file\"), if necessary. NOTE: this option reveals the password in the process list!"
@@ -3066,7 +3200,7 @@ int prepare_settings(int argc, char *arg
       FILTER_DECISION_ERROR,
       FILTER_GRACE_NONE,
       NULL,
-      CONFIG_SET_ACTION(usage(current_settings, USAGE_LEVEL_SHORT, NULL)),
+      CONFIG_SET_ACTION(usage_short, usage(current_settings, USAGE_LEVEL_SHORT, NULL)),
       NULL,
       NULL,
       "Displays the version number and copyright statement, then exits."

File Added: pkgsrc/mail/spamdyke/patches/patch-configure
$NetBSD: patch-configure,v 1.1 2018/07/29 08:41:18 schmonz Exp $

Remove anonymous inner functions to build with clang.

--- configure.orig	2018-07-08 21:13:24.635573514 +0000
+++ configure
@@ -4389,105 +4389,6 @@ fi
 
 fi
 
-
-# Checks for the flag to compile anonymous inner functions.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether anonymous inner functions are supported by default" >&5
-$as_echo_n "checking whether anonymous inner functions are supported by default... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
- int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                 OLD_CFLAGS=$CFLAGS
-                 CFLAGS="$OLD_CFLAGS -fnested-functions"
-                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether anonymous inner functions are supported with -fnested-functions" >&5
-$as_echo_n "checking whether anonymous inner functions are supported with -fnested-functions... " >&6; }
-                 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
- int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                                  CFLAGS="$OLD_CFLAGS -ftrampolines"
-                                  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether anonymous inner functions are supported with -ftrampolines" >&5
-$as_echo_n "checking whether anonymous inner functions are supported with -ftrampolines... " >&6; }
-                                  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
- int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                                                   CFLAGS="$OLD_CFLAGS -Wp,-Wno-trampolines"
-                                                   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether anonymous inner functions are supported with -Wp,-Wno-trampolines" >&5
-$as_echo_n "checking whether anonymous inner functions are supported with -Wp,-Wno-trampolines... " >&6; }
-                                                   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
- int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-                                                                    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Unable to compile without anonymous inner function support.
-See \`config.log' for more details" "$LINENO" 5; }
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct option is defined in getopt.h" >&5
 $as_echo_n "checking whether struct option is defined in getopt.h... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext

File Added: pkgsrc/mail/spamdyke/patches/patch-configure.ac
$NetBSD: patch-configure.ac,v 1.1 2018/07/29 08:41:18 schmonz Exp $

Remove anonymous inner functions to build with clang.

--- configure.ac.orig	2018-07-08 21:13:05.924307278 +0000
+++ configure.ac
@@ -188,37 +188,6 @@ AC_SEARCH_LIBS([getopt_long],
                                 [ AC_MSG_FAILURE([unable to compile without getopt_long(), you may need to install the libgnugetopt package/port]) ])
                ])
 
-# Checks for the flag to compile anonymous inner functions.
-AC_MSG_CHECKING([whether anonymous inner functions are supported by default])
-AC_TRY_COMPILE([],
-               [ int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0); ],
-               [ AC_MSG_RESULT([yes]) ],
-               [ AC_MSG_RESULT([no])
-                 OLD_CFLAGS=$CFLAGS
-                 CFLAGS="$OLD_CFLAGS -fnested-functions"
-                 AC_MSG_CHECKING([whether anonymous inner functions are supported with -fnested-functions])
-                 AC_TRY_COMPILE([],
-                                [ int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0); ],
-                                [ AC_MSG_RESULT([yes]) ],
-                                [ AC_MSG_RESULT([no])
-                                  CFLAGS="$OLD_CFLAGS -ftrampolines"
-                                  AC_MSG_CHECKING([whether anonymous inner functions are supported with -ftrampolines])
-                                  AC_TRY_COMPILE([],
-                                                 [ int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0); ],
-                                                 [ AC_MSG_RESULT([yes]) ],
-                                                 [ AC_MSG_RESULT([no])
-                                                   CFLAGS="$OLD_CFLAGS -Wp,-Wno-trampolines"
-                                                   AC_MSG_CHECKING([whether anonymous inner functions are supported with -Wp,-Wno-trampolines])
-                                                   AC_TRY_COMPILE([],
-                                                                  [ int (*bar)(int) = ({ int tmp_action(int foo) { foo++; return(0); } &tmp_action; }); (*bar)(0); ],
-                                                                  [ AC_MSG_RESULT([yes]) ],
-                                                                  [ AC_MSG_RESULT([no])
-                                                                    AC_MSG_FAILURE([Unable to compile without anonymous inner function support.])
-                                                                  ])
-                                                 ])
-                                ])
-               ])
-
 AC_MSG_CHECKING([whether struct option is defined in getopt.h])
 AC_TRY_COMPILE([ #define _GNU_SOURCE
                  #include <stdio.h>

cvs diff -r1.1 -r1.2 pkgsrc/mail/spamdyke/patches/patch-spamdyke.h (expand / switch to unified diff)

--- pkgsrc/mail/spamdyke/patches/patch-spamdyke.h 2017/07/09 16:16:32 1.1
+++ pkgsrc/mail/spamdyke/patches/patch-spamdyke.h 2018/07/29 08:41:18 1.2
@@ -1,15 +1,41 @@ @@ -1,15 +1,41 @@
1$NetBSD: patch-spamdyke.h,v 1.1 2017/07/09 16:16:32 schmonz Exp $ 1$NetBSD: patch-spamdyke.h,v 1.2 2018/07/29 08:41:18 schmonz Exp $
2 2
3Substitute paths. 3Substitute paths.
 4Remove anonymous inner functions to build with clang.
4 5
5--- spamdyke.h.orig 2015-04-30 00:53:36.000000000 +0000 6--- spamdyke.h.orig 2015-04-30 00:53:36.000000000 +0000
6+++ spamdyke.h 7+++ spamdyke.h
7@@ -104,7 +104,7 @@ 8@@ -104,7 +104,7 @@
8 #define STRINGIFY(X) _STRINGIFY(X) 9 #define STRINGIFY(X) _STRINGIFY(X)
9  10
10 #define DEFAULT_REMOTE_IP "0.0.0.0" 11 #define DEFAULT_REMOTE_IP "0.0.0.0"
11-#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/var/qmail/bin:/home/vpopmail/bin" 12-#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/var/qmail/bin:/home/vpopmail/bin"
12+#define DEFAULT_PATH "/bin:/usr/bin:@PREFIX@/bin:@QMAILDIR@/bin:/home/vpopmail/bin" 13+#define DEFAULT_PATH "/bin:/usr/bin:@PREFIX@/bin:@QMAILDIR@/bin:/home/vpopmail/bin"
13 #define DEFAULT_NIHDNS_RESOLVER_FILENAME "/etc/resolv.conf" 14 #define DEFAULT_NIHDNS_RESOLVER_FILENAME "/etc/resolv.conf"
14 #define DEFAULT_NIHDNS_PORT 53 15 #define DEFAULT_NIHDNS_PORT 53
15 #define DEFAULT_TIMEOUT_NIHDNS_TOTAL_SECS 30 16 #define DEFAULT_TIMEOUT_NIHDNS_TOTAL_SECS 30
 17@@ -1524,11 +1524,19 @@ struct rejection_data
 18 #define CONFIG_LOCATION_GLOBAL_FILE 0x02
 19 #define CONFIG_LOCATION_DIR 0x10
 20
 21-#define CONFIG_SET_ACTION(CMD) ({ int action(struct filter_settings *current_settings, int current_return_value, char *input_value, struct previous_action *history) { CMD; return(current_return_value); } &action; })
 22-#define CONFIG_ACTION(CMD) ({ int action(struct filter_settings *current_settings, int current_return_value) { CMD; return(current_return_value); } &action; })
 23-#define CONFIG_ACCESSOR_INTEGER(MEMBER) ({ int *access_integer(struct option_set *current_options) { return(&current_options->MEMBER); } &access_integer; })
 24-#define CONFIG_ACCESSOR_STRING(MEMBER) ({ char **access_string(struct option_set *current_options, int current_options_only) { return(&current_options->MEMBER); } &access_string; })
 25-#define CONFIG_ACCESSOR_STRING_ARRAY(MEMBER) ({ char ***access_string_array(struct option_set *current_options, int current_options_only) { return(&current_options->MEMBER); } &access_string_array; })
 26+#define CONFIG_SET_ACTION_PREDEF(NAME, CMD) static int predef_set_action_ ## NAME(struct filter_settings *current_settings, int current_return_value, char *input_value, struct previous_action *history) { CMD; return(current_return_value); }
 27+#define CONFIG_ACTION_PREDEF(NAME, CMD) static int predef_action_ ## NAME(struct filter_settings *current_settings, int current_return_value) { CMD; return(current_return_value); }
 28+#define CONFIG_ACCESSOR_INTEGER_PREDEF(MEMBER) static int *predef_access_integer_ ## MEMBER(struct option_set *current_options) { return(&current_options->MEMBER); }
 29+#define CONFIG_ACCESSOR_STRING_PREDEF(MEMBER) static char **predef_access_string_ ## MEMBER(struct option_set *current_options, int current_options_only) { return(&current_options->MEMBER); }
 30+#define CONFIG_ACCESSOR_STRING_ARRAY_PREDEF(MEMBER) static char ***predef_access_string_array_ ## MEMBER(struct option_set *current_options, int current_options_only) { return(&current_options->MEMBER); }
 31+#define CONFIG_ACCESSOR_STRING_ARRAY_MEMBER_PREDEF(ARRAY, MEMBER) static char **predef_access_string_ ## ARRAY ## _ ## MEMBER(struct option_set *current_options, int current_options_only) { return(&current_options->ARRAY[MEMBER]); }
 32+
 33+#define CONFIG_SET_ACTION(NAME, CMD) predef_set_action_ ## NAME
 34+#define CONFIG_ACTION(NAME, CMD) predef_action_ ## NAME
 35+#define CONFIG_ACCESSOR_INTEGER(MEMBER) predef_access_integer_ ## MEMBER
 36+#define CONFIG_ACCESSOR_STRING(MEMBER) predef_access_string_ ## MEMBER
 37+#define CONFIG_ACCESSOR_STRING_ARRAY(MEMBER) predef_access_string_array_ ## MEMBER
 38+#define CONFIG_ACCESSOR_STRING_ARRAY_MEMBER(ARRAY, MEMBER) predef_access_string_ ## ARRAY ## _ ## MEMBER
 39
 40 #define ES_TYPE_NONE 0
 41 #define ES_TYPE_SEND 1