stand/lua: Chop off the decimal for numbers passed to setcursor

Decimals screw up the escape sequence and the cursor will not get set. Right
now this only affects setting the cursor for drawing "Welcome to FreeBSD" --
the resulting number after our (x+(w/2)-9) calculation gets output as
"14.0."

This should be fixed at the interpreter level, rather than here, but this is
not a widespread problem at the moment so we'll fix it up in further work.

Reported by:	David Wolfskill <david@catwhisker.org>
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D14375
This commit is contained in:
Kyle Evans 2018-02-16 17:46:07 +00:00
parent 1504bce32d
commit 901d96e3fb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=329387

View File

@ -31,6 +31,17 @@ local screen = {};
local color = require("color");
local core = require("core");
-- XXX TODO: This should be fixed in the interpreter to not print decimals
function intstring(num)
local str = tostring(num)
local decimal = string.find(str, "[.]")
if decimal then
return string.sub(str, 1, decimal - 1)
end
return str
end
function screen.clear()
if core.bootserial() then
return;
@ -42,7 +53,8 @@ function screen.setcursor(x, y)
if core.bootserial() then
return;
end
loader.printc("\027["..y..";"..x.."H");
loader.printc("\027["..intstring(y)..";"..intstring(x).."H");
end
function screen.setforeground(c)