#endif
{ "dns_again_means_nonexist", opt_stringptr, &dns_again_means_nonexist },
{ "dns_check_names_pattern", opt_stringptr, &check_dns_names_pattern },
#endif
{ "dns_again_means_nonexist", opt_stringptr, &dns_again_means_nonexist },
{ "dns_check_names_pattern", opt_stringptr, &check_dns_names_pattern },
{ "dns_csa_search_limit", opt_int, &dns_csa_search_limit },
{ "dns_csa_use_reverse", opt_bool, &dns_csa_use_reverse },
{ "dns_dnssec_ok", opt_int, &dns_dnssec_ok },
{ "dns_csa_search_limit", opt_int, &dns_csa_search_limit },
{ "dns_csa_use_reverse", opt_bool, &dns_csa_use_reverse },
{ "dns_dnssec_ok", opt_int, &dns_dnssec_ok },
{ "local_from_prefix", opt_stringptr, &local_from_prefix },
{ "local_from_suffix", opt_stringptr, &local_from_suffix },
{ "local_interfaces", opt_stringptr, &local_interfaces },
{ "local_from_prefix", opt_stringptr, &local_from_prefix },
{ "local_from_suffix", opt_stringptr, &local_from_suffix },
{ "local_interfaces", opt_stringptr, &local_interfaces },
{ "local_scan_timeout", opt_time, &local_scan_timeout },
{ "local_scan_timeout", opt_time, &local_scan_timeout },
{ "local_sender_retain", opt_bool, &local_sender_retain },
{ "localhost_number", opt_stringptr, &host_number_string },
{ "log_file_path", opt_stringptr, &log_file_path },
{ "local_sender_retain", opt_bool, &local_sender_retain },
{ "localhost_number", opt_stringptr, &host_number_string },
{ "log_file_path", opt_stringptr, &log_file_path },
- name Name of the macro. Must be in storage persistent past the call
- val Expansion result for the macro. Ditto persistence.
+ name Name of the macro; will be copied
+ val Expansion result for the macro; will be copied
m->command_line = command_line;
m->namelen = Ustrlen(name);
m->replen = Ustrlen(val);
m->command_line = command_line;
m->namelen = Ustrlen(name);
m->replen = Ustrlen(val);
if (!m->command_line && !redef)
{
log_write(0, LOG_CONFIG|LOG_PANIC, "macro \"%s\" is already "
if (!m->command_line && !redef)
{
log_write(0, LOG_CONFIG|LOG_PANIC, "macro \"%s\" is already "
/* Process line for macros. The line is in big_buffer starting at offset len.
Expand big_buffer if needed. Handle definitions of new macros, and
/* Process line for macros. The line is in big_buffer starting at offset len.
Expand big_buffer if needed. Handle definitions of new macros, and
/* Skip leading chars which cannot start a macro name, to avoid multiple
pointless rescans in Ustrstr calls. */
/* Skip leading chars which cannot start a macro name, to avoid multiple
pointless rescans in Ustrstr calls. */
/* For each defined macro, scan the line (from after XXX= if present),
replacing all occurrences of the macro. */
*macro_found = FALSE;
/* For each defined macro, scan the line (from after XXX= if present),
replacing all occurrences of the macro. */
*macro_found = FALSE;