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 \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(...);