X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/c6887a05b9c56d373086e9a79e20c26bebd300b2..cd19f9a79c20f9c0c9d650a8aa21d9cc54a66620:/src/src/readconf.c diff --git a/src/src/readconf.c b/src/src/readconf.c index 83ee51b65..5b486d0b6 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -2,9 +2,10 @@ * Exim - an Internet mail transport agent * *************************************************/ -/* Copyright (c) The Exim Maintainers 2020 - 2022 */ +/* Copyright (c) The Exim Maintainers 2020 - 2023 */ /* Copyright (c) University of Cambridge 1995 - 2018 */ /* See the file NOTICE for conditions of use and distribution. */ +/* SPDX-License-Identifier: GPL-2.0-or-later */ /* Functions for reading the configuration file, and for displaying overall configuration values. Thanks to Brian Candler for the original @@ -186,6 +187,9 @@ static optionlist optionlist_config[] = { #endif { "hosts_require_helo", opt_stringptr, {&hosts_require_helo} }, { "hosts_treat_as_local", opt_stringptr, {&hosts_treat_as_local} }, +#ifdef EXPERIMENTAL_XCLIENT + { "hosts_xclient", opt_stringptr, {&hosts_xclient} }, +#endif #ifdef LOOKUP_IBASE { "ibase_servers", opt_stringptr, {&ibase_servers} }, #endif @@ -205,7 +209,7 @@ static optionlist optionlist_config[] = { { "ldap_start_tls", opt_bool, {&eldap_start_tls} }, { "ldap_version", opt_int, {&eldap_version} }, #endif -#ifdef EXPERIMENTAL_ESMTP_LIMITS +#ifndef DISABLE_ESMTP_LIMITS { "limits_advertise_hosts", opt_stringptr, {&limits_advertise_hosts} }, #endif { "local_from_check", opt_bool, {&local_from_check} }, @@ -289,7 +293,7 @@ static optionlist optionlist_config[] = { { "received_header_text", opt_stringptr, {&received_header_text} }, { "received_headers_max", opt_int, {&received_headers_max} }, { "recipient_unqualified_hosts", opt_stringptr, {&recipient_unqualified_hosts} }, - { "recipients_max", opt_int, {&recipients_max} }, + { "recipients_max", opt_stringptr, {&recipients_max} }, { "recipients_max_reject", opt_bool, {&recipients_max_reject} }, #ifdef LOOKUP_REDIS { "redis_servers", opt_stringptr, {&redis_servers} }, @@ -398,7 +402,7 @@ static optionlist optionlist_config[] = { { "uucp_from_pattern", opt_stringptr, {&uucp_from_pattern} }, { "uucp_from_sender", opt_stringptr, {&uucp_from_sender} }, { "warn_message_file", opt_stringptr, {&warn_message_file} }, - { "write_rejectlog", opt_bool, {&write_rejectlog} } + { "write_rejectlog", opt_bool, {&write_rejectlog} }, }; #ifndef MACRO_PREDEF @@ -2355,11 +2359,8 @@ switch (type) } case opt_func: - { - void (*fn)() = ol->v.fn; - fn(name, s, 0); + ol->v.fn(name, s, 0); break; - } } return TRUE; @@ -2383,11 +2384,7 @@ readconf_printtime(int t) int s, m, h, d, w; uschar *p = time_buffer; -if (t < 0) - { - *p++ = '-'; - t = -t; - } +if (t < 0) *p++ = '-', t = -t; s = t % 60; t /= 60; @@ -2744,7 +2741,7 @@ Returns: Boolean success */ BOOL -readconf_print(const uschar *name, uschar *type, BOOL no_labels) +readconf_print(const uschar * name, const uschar * type, BOOL no_labels) { BOOL names_only = FALSE; optionlist *ol2 = NULL; @@ -2918,7 +2915,7 @@ else if (Ustrcmp(type, "macro") == 0) for printing. So we have an admin_users restriction. */ if (!f.admin_user) { - fprintf(stderr, "exim: permission denied\n"); + fprintf(stderr, "exim: permission denied; not admin\n"); return FALSE; } for (macro_item * m = macros; m; m = m->next) @@ -3124,8 +3121,8 @@ readconf_main(BOOL nowarn) { int sep = 0; struct stat statbuf; -uschar *s, *filename; -const uschar *list = config_main_filelist; +uschar * s, * filename; +const uschar * list = config_main_filelist; /* Loop through the possible file names */ @@ -3218,7 +3215,7 @@ if (config_file) g = string_cat(NULL, buf); /* If the dir does not end with a "/", append one */ - if (g->s[g->ptr-1] != '/') + if (gstring_last_char(g) != '/') g = string_catn(g, US"/", 1); /* If the config file contains a "/", extract the directory part */ @@ -3462,7 +3459,7 @@ leading "log_". */ if (syslog_facility_str) { int i; - uschar *s = syslog_facility_str; + uschar * s = syslog_facility_str; if ((Ustrlen(syslog_facility_str) >= 4) && (strncmpic(syslog_facility_str, US"log_", 4) == 0)) @@ -3484,10 +3481,11 @@ if (syslog_facility_str) if (*pid_file_path) { - if (!(s = expand_string(pid_file_path))) + const uschar * t = expand_cstring(pid_file_path); + if (!t) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "failed to expand pid_file_path " "\"%s\": %s", pid_file_path, expand_string_message); - pid_file_path = s; + pid_file_path = t; } /* Set default value of process_log_path */