svn commit: r352194 - head/stand/lua
Kyle Evans
kevans at FreeBSD.org
Tue Sep 10 21:30:38 UTC 2019
Author: kevans
Date: Tue Sep 10 21:30:38 2019
New Revision: 352194
URL: https://svnweb.freebsd.org/changeset/base/352194
Log:
lualoader: Revert to ASCII menu frame for serial console
The box drawing characters we use aren't necessarily safe with a serial
console; for instance, in the report by npn@, these were causing his xterm
to send back a sequence that lua picked up as input and halted the boot.
This is less than ideal.
Fallback to ASCII frames for console with 'comconsole' in it. This is a
partial revert r338108 by imp@ -- instead of removing the menu entirely and
disabling color/cursor sequences, just reverting the default frame to ASCII
is enough to not break in this setup.
Reported by: npn
Triaged and recommended by: tsoome
Modified:
head/stand/lua/core.lua
head/stand/lua/drawer.lua
Modified: head/stand/lua/core.lua
==============================================================================
--- head/stand/lua/core.lua Tue Sep 10 21:14:56 2019 (r352193)
+++ head/stand/lua/core.lua Tue Sep 10 21:30:38 2019 (r352194)
@@ -325,6 +325,16 @@ function core.isZFSBoot()
return false
end
+function core.isSerialConsole()
+ local c = loader.getenv("console")
+ if c ~= nil then
+ if c:find("comconsole") ~= nil then
+ return true
+ end
+ end
+ return false
+end
+
function core.isSerialBoot()
local s = loader.getenv("boot_serial")
if s ~= nil then
Modified: head/stand/lua/drawer.lua
==============================================================================
--- head/stand/lua/drawer.lua Tue Sep 10 21:14:56 2019 (r352193)
+++ head/stand/lua/drawer.lua Tue Sep 10 21:30:38 2019 (r352194)
@@ -144,13 +144,20 @@ local function drawmenu(menudef)
return alias_table
end
+local function defaultframe()
+ if core.isSerialConsole() then
+ return "ascii"
+ end
+ return "double"
+end
+
local function drawbox()
local x = menu_position.x - 3
local y = menu_position.y - 1
local w = frame_size.w
local h = frame_size.h
- local framestyle = loader.getenv("loader_menu_frame") or "double"
+ local framestyle = loader.getenv("loader_menu_frame") or defaultframe()
local framespec = drawer.frame_styles[framestyle]
-- If we don't have a framespec for the current frame style, just don't
-- draw a box.
More information about the svn-src-head
mailing list