svn commit: r331476 - head/stand/lua
Kyle Evans
kevans at FreeBSD.org
Sat Mar 24 04:00:02 UTC 2018
Author: kevans
Date: Sat Mar 24 04:00:01 2018
New Revision: 331476
URL: https://svnweb.freebsd.org/changeset/base/331476
Log:
lualoader: Make config env-related bits private API
This pertains exclusively to the set/restore functionality that we offer,
where any changes made by loader.conf previously will be effectively removed
upon reload of the configuration. We don't currently have a need to export
these, so don't bother.
Modified:
head/stand/lua/config.lua
Modified: head/stand/lua/config.lua
==============================================================================
--- head/stand/lua/config.lua Sat Mar 24 02:01:25 2018 (r331475)
+++ head/stand/lua/config.lua Sat Mar 24 04:00:01 2018 (r331476)
@@ -34,6 +34,10 @@ local hook = require("hook")
local config = {}
local modules = {}
local carousel_choices = {}
+-- Which variables we changed
+local env_changed = {}
+-- Values to restore env to (nil to unset)
+local env_restore = {}
local MSG_FAILEXEC = "Failed to exec '%s'"
local MSG_FAILSETENV = "Failed to '%s' with value: %s"
@@ -50,6 +54,44 @@ local MSG_KERNLOADING = "Loading kernel..."
local MSG_MODLOADING = "Loading configured modules..."
local MSG_MODLOADFAIL = "Could not load one or more modules!"
+local function restoreEnv()
+ -- Examine changed environment variables
+ for k, v in pairs(env_changed) do
+ local restore_value = env_restore[k]
+ if restore_value == nil then
+ -- This one doesn't need restored for some reason
+ goto continue
+ end
+ local current_value = loader.getenv(k)
+ if current_value ~= v then
+ -- This was overwritten by some action taken on the menu
+ -- most likely; we'll leave it be.
+ goto continue
+ end
+ restore_value = restore_value.value
+ if restore_value ~= nil then
+ loader.setenv(k, restore_value)
+ else
+ loader.unsetenv(k)
+ end
+ ::continue::
+ end
+
+ env_changed = {}
+ env_restore = {}
+end
+
+local function setEnv(key, value)
+ -- Track the original value for this if we haven't already
+ if env_restore[key] == nil then
+ env_restore[key] = {value = loader.getenv(key)}
+ end
+
+ env_changed[key] = value
+
+ return loader.setenv(key, value)
+end
+
local pattern_table = {
{
str = "^%s*(#.*)",
@@ -120,7 +162,7 @@ local pattern_table = {
{
str = "^%s*([%w%p]+)%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
process = function(k, v)
- if config.setenv(k, v) ~= 0 then
+ if setEnv(k, v) ~= 0 then
print(MSG_FAILSETENV:format(k, v))
end
end,
@@ -129,7 +171,7 @@ local pattern_table = {
{
str = "^%s*([%w%p]+)%s*=%s*(%d+)%s*(.*)",
process = function(k, v)
- if config.setenv(k, v) ~= 0 then
+ if setEnv(k, v) ~= 0 then
print(MSG_FAILSETENV:format(k, tostring(v)))
end
end,
@@ -195,10 +237,6 @@ local function checkNextboot()
end
-- Module exports
--- Which variables we changed
-config.env_changed = {}
--- Values to restore env to (nil to unset)
-config.env_restore = {}
config.verbose = false
-- The first item in every carousel is always the default item.
@@ -214,44 +252,6 @@ function config.setCarouselIndex(id, idx)
carousel_choices[id] = idx
end
-function config.restoreEnv()
- -- Examine changed environment variables
- for k, v in pairs(config.env_changed) do
- local restore_value = config.env_restore[k]
- if restore_value == nil then
- -- This one doesn't need restored for some reason
- goto continue
- end
- local current_value = loader.getenv(k)
- if current_value ~= v then
- -- This was overwritten by some action taken on the menu
- -- most likely; we'll leave it be.
- goto continue
- end
- restore_value = restore_value.value
- if restore_value ~= nil then
- loader.setenv(k, restore_value)
- else
- loader.unsetenv(k)
- end
- ::continue::
- end
-
- config.env_changed = {}
- config.env_restore = {}
-end
-
-function config.setenv(key, value)
- -- Track the original value for this if we haven't already
- if config.env_restore[key] == nil then
- config.env_restore[key] = {value = loader.getenv(key)}
- end
-
- config.env_changed[key] = value
-
- return loader.setenv(key, value)
-end
-
-- name here is one of 'name', 'type', flags', 'before', 'after', or 'error.'
-- These are set from lines in loader.conf(5): ${key}_${name}="${value}" where
-- ${key} is a module name.
@@ -503,7 +503,7 @@ end
-- Reload configuration
function config.reload(file)
modules = {}
- config.restoreEnv()
+ restoreEnv()
config.load(file)
hook.runAll("config.reloaded")
end
More information about the svn-src-head
mailing list