slimpack/src/entry/dump_loader.lua
2025-03-16 02:37:31 +02:00

37 lines
735 B
Lua

local function escape(str)
return "\"" .. str:gsub(".", function (c)
local b = string.byte(c);
if c == "\n" then
return "\\n";
elseif c == "\\" then
return "\\\\";
elseif c == "\"" then
return "\\\"";
elseif b >= 32 and b <= 126 then
return c;
else
return ("\\%.3o"):format(b);
end
end) .. "\"";
end
local function main(in_f, out_f)
local f = assert(io.open(out_f, "w"));
f:write "#include <stdint.h>\n";
f:write "#define LOADER loader_bytecode\n";
f:write "#define LOADER_SIZE (sizeof loader_bytecode - 1)\n";
f:write "static const uint8_t loader_bytecode[] = ";
for part in io.lines(in_f, 64) do
f:write(escape(part));
f:write"\n";
end
f:write ";";
assert(f:close());
end
main(...);