Date: Tue, 10 Sep 2019 21:30:38 +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: r352194 - head/stand/lua Message-ID: <201909102130.x8ALUc93094699@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909102130.x8ALUc93094699>