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>