--============================================================================ -- bin2carray.lua -- -- License: GPLv2 (see COPYING) or any later version -- -- Authors: Axel Kittenberger -- -- Transforms a binary file (the compiled lsyncd luacode) in a c array -- so it can be included into the executable in a portable way. -- --============================================================================ if #arg < 3 then error( 'Usage: '..arg[ 0 ]..' [infile] [varname] [outfile]' ) end fin, err = io.open( arg[ 1 ], 'rb' ) if fin == nil then error( 'Cannot open "'..arg[ 1 ]..'" for reading: '..err ) end fout, err = io.open( arg[ 3 ], 'w' ) if fout == nil then error( 'Cannot open "'..arg[ 3 ]..'"for writing: '..err ) end fout:write( '/* created by '..arg[ 0 ]..' from file '..arg[ 1 ]..' */\n') fout:write( '#include \n' ) fout:write( 'const char '..arg[ 2 ]..'_out[] = {\n' ) while true do local block = fin:read( 16 ) if block == nil then break end for i = 1, #block do local val = string.format( '%x', block:byte( i ) ) if #val < 2 then val = "0" ..val end fout:write( "0x", val, "," ) end fout:write( '\n' ) end fout:write( '};\n\nsize_t '..arg[ 2 ]..'_size = sizeof('..arg[ 2 ]..'_out);\n' ); fin:close( ); fout:close( );