+#ifdef WHITELIST_D_MACROS
+static void
+wlist_check(uschar * name, uschar * val, void * ctx)
+{
+uschar ** w, ** whites = ctx;
+unsigned len;
+int n;
+
+for (w = whites; *w; ++w)
+ if (Ustrcmp(*w, name) == 0) break;
+if (*w)
+ {
+ if (!val || !*val) return;
+ len = Ustrlen(val);
+ if ((n = pcre_exec(regex_whitelisted_macro, NULL, CS val, len,
+ 0, PCRE_EOPT, NULL, 0)) >= 0)
+ return;
+ if (n != PCRE_ERROR_NOMATCH)
+ debug_printf("macros_trusted checking %s returned %d\n", name, n);
+ }
+*whites = NULL;
+return;
+}
+#endif
+
+