From: kevans Date: Tue, 10 Sep 2019 21:30:38 +0000 (+0000) Subject: lualoader: Revert to ASCII menu frame for serial console X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d03c822884bb0561bce72ef34139acf927687767;p=freebsd.git 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 --- diff --git a/stand/lua/core.lua b/stand/lua/core.lua index 722381e0a06..61476a2ed72 100644 --- a/stand/lua/core.lua +++ b/stand/lua/core.lua @@ -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 diff --git a/stand/lua/drawer.lua b/stand/lua/drawer.lua index 18030979398..6a5b62b7981 100644 --- a/stand/lua/drawer.lua +++ b/stand/lua/drawer.lua @@ -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.