If nfs.conf contains, for example include = /etc/nfs.conf.local and /etc/nfs.conf.local doesn't exist, then a warning is given. Sometimes it is useful to have an optional include file which is included if present, but for which an absence doesn't give a warning. Systemd has a convention that a hyphen at the start of an include file name marks it as optional, so add this convention to nfs-utils. So include = -/etc/nfs.conf.local will not give a warning if the file doesn't exist. Signed-off-by: NeilBrown <neilb@xxxxxxx> --- support/nfs/conffile.c | 13 ++++++++++--- systemd/nfs.conf.man | 3 +++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/support/nfs/conffile.c b/support/nfs/conffile.c index 6ba8a35ce7c6..d55bfe10120a 100644 --- a/support/nfs/conffile.c +++ b/support/nfs/conffile.c @@ -412,11 +412,18 @@ conf_parse_line(int trans, char *line, const char *filename, int lineno, char ** if (strcasecmp(line, "include")==0) { /* load and parse subordinate config files */ + _Bool optional = false; + + if (val && *val == '-') { + optional = true; + val++; + } + relpath = relative_path(filename, val); if (relpath == NULL) { - xlog_warn("config error at %s:%d: " - "error loading included config", - filename, lineno); + if (!optional) + xlog_warn("config error at %s:%d: error loading included config", + filename, lineno); return; } diff --git a/systemd/nfs.conf.man b/systemd/nfs.conf.man index d375bcc1d5a7..3f1c7261991d 100644 --- a/systemd/nfs.conf.man +++ b/systemd/nfs.conf.man @@ -65,6 +65,9 @@ section headers, then new sections will be created just as if the included file appeared in place of the .B include line. +If the file name starts with a hyphen then that is stripped off +before the file is opened, and if file doesn't exist no warning is +given. Normally a non-existent include file generates a warning. .PP Lookup of section and value names is case-insensitive.