Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Feb 2018 16:59:28 +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: r329589 - head/stand/lua
Message-ID:  <201802191659.w1JGxSVg016139@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans
Date: Mon Feb 19 16:59:28 2018
New Revision: 329589
URL: https://svnweb.freebsd.org/changeset/base/329589

Log:
  stand/lua: Track env changes that come in via loader.conf(5)
  
  This will be used when boot environment support lands to make a good-faith
  effort to apply any new loader.conf(5) environment settings atop the default
  configuration that we started with.

Modified:
  head/stand/lua/config.lua

Modified: head/stand/lua/config.lua
==============================================================================
--- head/stand/lua/config.lua	Mon Feb 19 16:42:06 2018	(r329588)
+++ head/stand/lua/config.lua	Mon Feb 19 16:59:28 2018	(r329589)
@@ -27,9 +27,23 @@
 --
 
 local config = {};
+-- Which variables we changed
+config.env_changed = {};
+-- Values to restore env to (nil to unset)
+config.env_restore = {};
 
 local modules = {};
 
+function config.setenv(k, v)
+	-- Do we need to track this change?
+	if (config.env_changed[k] == nil) then
+		config.env_changed[k] = true;
+		config.env_restore[k] = loader.getenv(k);
+	end
+
+	return loader.setenv(k, v);
+end
+
 function config.setKey(k, n, v)
 	if (modules[k] == nil) then
 		modules[k] = {};
@@ -115,7 +129,7 @@ local pattern_table = {
 	[10] = {
 		str = "^%s*([%w%p]+)%s*=%s*\"([%w%s%p]-)\"%s*(.*)",
 		process = function(k, v)
-			if (loader.setenv(k, v) ~= 0) then
+			if (config.setenv(k, v) ~= 0) then
 				print("Failed to set '" .. k ..
 				    "' with value: " .. v .. "");
 			end
@@ -125,7 +139,7 @@ local pattern_table = {
 	[11] = {
 		str = "^%s*([%w%p]+)%s*=%s*(%d+)%s*(.*)",
 		process = function(k, v)
-			if (loader.setenv(k, v) ~= 0) then
+			if (config.setenv(k, v) ~= 0) then
 				print("Failed to set '" .. k ..
 				    "' with value: " .. v .. "");
 			end



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