From 8e5875a886b5a4a82cf1350ebfcbc55f34262e80 Mon Sep 17 00:00:00 2001 From: ruki Date: Fri, 23 Aug 2019 23:43:20 +0800 Subject: detect luajit bitcode file --- core/src/xmake/io/file_open.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'core/src') diff --git a/core/src/xmake/io/file_open.c b/core/src/xmake/io/file_open.c index fa39fc125..46e63cd62 100644 --- a/core/src/xmake/io/file_open.c +++ b/core/src/xmake/io/file_open.c @@ -52,7 +52,12 @@ static tb_size_t xm_io_file_detect_charset(tb_byte_t const** data_ptr, tb_long_t tb_size_t charset = XM_IO_FILE_ENCODING_BINARY; do { - if (size >= 3 && data[0] == 239 && data[1] == 187 && data[2] == 191) // utf-8 with bom + // is luajit bitcode? open as binary + if (size >= 3 && data[0] == 27 && data[1] == 'L' && data[2] == 'J') + break; + + // utf-8 with bom + if (size >= 3 && data[0] == 239 && data[1] == 187 && data[2] == 191) { charset = TB_CHARSET_TYPE_UTF8; data += 3; // skip bom @@ -60,13 +65,15 @@ static tb_size_t xm_io_file_detect_charset(tb_byte_t const** data_ptr, tb_long_t } if (size >= 2) { - if (data[0] == 254 && data[1] == 255) // utf16be + // utf16be + if (data[0] == 254 && data[1] == 255) { charset = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_BE; data += 2; // skip bom break; } - else if (data[0] == 255 && data[1] == 254) // utf16le + // utf16le + else if (data[0] == 255 && data[1] == 254) { charset = TB_CHARSET_TYPE_UTF16 | TB_CHARSET_TYPE_LE; data += 2; // skip bom -- cgit v1.3.1