[2/3] conffile: allow optional include files.
diff mbox series

Message ID 156921281807.27519.17127755754207047423.stgit@noble.brown
State New
Headers show
Series
  • some nfs-utils patches.
Related show

Commit Message

NeilBrown Sept. 23, 2019, 4:26 a.m. UTC
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@suse.de>
---
 support/nfs/conffile.c |   13 ++++++++++---
 systemd/nfs.conf.man   |    3 +++
 2 files changed, 13 insertions(+), 3 deletions(-)

Patch
diff mbox series

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.