Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Apr 2020 02:03:03 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r360421 - head/stand/lua
Message-ID:  <202004280203.03S233NJ063538@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans
Date: Tue Apr 28 02:03:03 2020
New Revision: 360421
URL: https://svnweb.freebsd.org/changeset/base/360421

Log:
  lualoader: config: start exporting readConfFiles
  
  In the process, change it slightly: readConfFiles will take a string like
  loader_conf_files in addition to the loaded_files table that it normally
  takes. This is to facilitate the addition of a read-conf CLI command, which
  will just pass in the single file to read and an empty table.
  
  MFC after:	3 days

Modified:
  head/stand/lua/config.lua
  head/stand/lua/config.lua.8

Modified: head/stand/lua/config.lua
==============================================================================
--- head/stand/lua/config.lua	Tue Apr 28 01:39:34 2020	(r360420)
+++ head/stand/lua/config.lua	Tue Apr 28 02:03:03 2020	(r360421)
@@ -340,38 +340,6 @@ local function loadModule(mod, silent)
 	return status
 end
 
-local function readConfFiles(loaded_files)
-	local f = loader.getenv("loader_conf_files")
-	if f ~= nil then
-		local prefiles = f
-		for name in f:gmatch("([%w%p]+)%s*") do
-			if loaded_files[name] ~= nil then
-				goto continue
-			end
-
-			print("Loading " .. name)
-			-- These may or may not exist, and that's ok. Do a
-			-- silent parse so that we complain on parse errors but
-			-- not for them simply not existing.
-			if not config.processFile(name, true) then
-				print(MSG_FAILPARSECFG:format(name))
-			end
-
-			loaded_files[name] = true
-			local newfiles = loader.getenv("loader_conf_files")
-			if prefiles ~= newfiles then
-				-- Recurse; process the new files immediately.
-				-- If we come back and it turns out we've
-				-- already loaded the rest of what was in the
-				-- original loader_conf_files, no big deal.
-				readConfFiles(loaded_files)
-				prefiles = newfiles
-			end
-			::continue::
-		end
-	end
-end
-
 local function readFile(name, silent)
 	local f = io.open(name)
 	if f == nil then
@@ -492,6 +460,40 @@ function config.parse(text)
 	return status
 end
 
+function config.readConfFiles(files, loaded_files)
+	if files ~= nil then
+		-- The caller may not have passed in loader_conf_files; we could
+		-- have instead gotten some other string of files.  We don't
+		-- want to trigger any redundant re-read/loads based on this.
+		local prefiles = loader.getenv("loader_conf_files")
+		for name in files:gmatch("([%w%p]+)%s*") do
+			if loaded_files[name] ~= nil then
+				goto continue
+			end
+
+			print("Loading " .. name)
+			-- These may or may not exist, and that's ok. Do a
+			-- silent parse so that we complain on parse errors but
+			-- not for them simply not existing.
+			if not config.processFile(name, true) then
+				print(MSG_FAILPARSECFG:format(name))
+			end
+
+			loaded_files[name] = true
+			local newfiles = loader.getenv("loader_conf_files")
+			if prefiles ~= newfiles then
+				-- Recurse; process the new files immediately.
+				-- If we come back and it turns out we've
+				-- already loaded the rest of what was in the
+				-- original loader_conf_files, no big deal.
+				config.readConfFiles(newfiles, loaded_files)
+				prefiles = newfiles
+			end
+			::continue::
+		end
+	end
+end
+
 -- other_kernel is optionally the name of a kernel to load, if not the default
 -- or autoloaded default from the module_path
 function config.loadKernel(other_kernel)
@@ -605,7 +607,7 @@ function config.load(file, reloading)
 	end
 
 	local loaded_files = {file = true}
-	readConfFiles(loaded_files)
+	config.readConfFiles(loader.getenv("loader_conf_files"), loaded_files)
 
 	checkNextboot()
 

Modified: head/stand/lua/config.lua.8
==============================================================================
--- head/stand/lua/config.lua.8	Tue Apr 28 01:39:34 2020	(r360420)
+++ head/stand/lua/config.lua.8	Tue Apr 28 02:03:03 2020	(r360421)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 9, 2018
+.Dd April 27, 2020
 .Dt CONFIG.LUA 8
 .Os
 .Sh NAME
@@ -59,6 +59,15 @@ to
 A lookup will be done as needed to determine what value
 .Ev idx
 actually corresponds to.
+.It Fn config.readConfFiles files loaded_files
+Process
+.Ev files
+as if it were
+.Ev loader_conf_files .
+The caller may should pass in a table as the
+.Ev loaded_files
+argument, which uses filenames as keys and any non-nil value to indicate that
+the file named by the key has been loaded.
 .It Fn config.processFile name silent
 Process and parse
 .Ev name



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202004280203.03S233NJ063538>