Commit 64f80706 authored by Vladimír Čunát's avatar Vladimír Čunát

lua: embed bytecode instead of stripped source

It seems a bit cleaner, though impact on size and load speed should not
be noticeable.  We simply install most of the lua code, as before, and I
assume that we *do* want to keep that visibility, at least by default.
Suggested on !57.
parent f32f6aa2
......@@ -20,10 +20,10 @@ MODULEDIR ?= $(LIBDIR)/kdns_modules
ETCDIR ?= $(PREFIX)/etc/kresd
# Tools
CC ?= cc
RM := rm -f
CC ?= cc
RM := rm -f
LN := ln -s
XXD_LUA := ./scripts/embed-lua.sh
LUA := luajit -b -t h
INSTALL := install
# Flags
......
......@@ -12,7 +12,7 @@ kresd_DIST := daemon/lua/kres.lua daemon/lua/trust_anchors.lua
# Embedded resources
%.inc: %.lua
@$(call quiet,XXD_LUA,$<) $< > $@
@$(call quiet,LUA,$<) $< $@
ifeq ($(AMALG), yes)
kresd.amalg.c: daemon/lua/sandbox.inc daemon/lua/config.inc
else
......
......@@ -688,10 +688,9 @@ static int engine_loadconf(struct engine *engine, const char *config_path)
lua_pop(engine->L, 1);
}
/* Init environment */
static const char sandbox_bytecode[] = {
#include "daemon/lua/sandbox.inc"
};
if (l_dobytecode(engine->L, sandbox_bytecode, sizeof(sandbox_bytecode), "init") != 0) {
#include "daemon/lua/sandbox.inc"
if (l_dobytecode(engine->L, luaJIT_BC_sandbox,
sizeof(luaJIT_BC_sandbox), "init") != 0) {
fprintf(stderr, "[system] error %s\n", lua_tostring(engine->L, -1));
lua_pop(engine->L, 1);
return kr_error(ENOEXEC);
......@@ -705,10 +704,9 @@ static int engine_loadconf(struct engine *engine, const char *config_path)
}
if (ret == 0) {
/* Load defaults */
static const char config_bytecode[] = {
#include "daemon/lua/config.inc"
};
ret = l_dobytecode(engine->L, config_bytecode, sizeof(config_bytecode), "config");
#include "daemon/lua/config.inc"
ret = l_dobytecode(engine->L, luaJIT_BC_config,
sizeof(luaJIT_BC_config), "config");
}
/* Evaluate */
......
#!/bin/sh
set -e
# Clean unnecessary stuff from the lua file; note the significant tabulator.
alias strip="sed -e 's/^[ ]*//g; s/ */ /g; /^--/d; /^$/d'"
if command -v xxd > /dev/null 2>&1; then
strip < "$1" | xxd -i -
else
strip < "$1" | hexdump -v -e '/1 "0x%02X, " " "'
fi
exit $?
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment