37 lines
735 B
Lua
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(...);
|