svn commit: r330339 - head/stand/liblua
Kyle Evans
kevans at FreeBSD.org
Sat Mar 3 17:13:13 UTC 2018
Author: kevans
Date: Sat Mar 3 17:13:12 2018
New Revision: 330339
URL: https://svnweb.freebsd.org/changeset/base/330339
Log:
liblua: Add loader.interpret
This allows lua to pass back a command string to be executed as if it were
typed at the loader prompt- loader tries to execute the string first as pure
lua, then parses it and gives lua a chance to intercept before it tries to
execute it itself.
This will be used to implement menu_timeout_command, among other things,
which *should* be used to execute basic loader commands independent of the
chosen interpreter.
Modified:
head/stand/liblua/lutils.c
Modified: head/stand/liblua/lutils.c
==============================================================================
--- head/stand/liblua/lutils.c Sat Mar 3 15:10:37 2018 (r330338)
+++ head/stand/liblua/lutils.c Sat Mar 3 17:13:12 2018 (r330339)
@@ -77,7 +77,26 @@ lua_perform(lua_State *L)
return 1;
}
+/*
+ * Accepts a space-delimited loader command and runs it through the standard
+ * loader parsing, as if it were executed at the loader prompt by the user.
+ */
static int
+lua_interpret(lua_State *L)
+{
+ const char *interp_string;
+
+ if (lua_gettop(L) != 1) {
+ lua_pushnil(L);
+ return 1;
+ }
+
+ interp_string = luaL_checkstring(L, 1);
+ lua_pushinteger(L, interp_run(interp_string));
+ return 1;
+}
+
+static int
lua_getchar(lua_State *L)
{
@@ -305,6 +324,7 @@ lua_writefile(lua_State *L)
static const struct luaL_Reg loaderlib[] = {
REG_SIMPLE(delay),
REG_SIMPLE(command),
+ REG_SIMPLE(interpret),
REG_SIMPLE(getenv),
REG_SIMPLE(perform),
/* Also registered as the global 'printc' */
More information about the svn-src-all
mailing list